home *** CD-ROM | disk | FTP | other *** search
/ The World of Computer Software / The World of Computer Software.iso / inter33a.zip / INTERRUP.B < prev    next >
Text File  |  1993-01-03  |  347KB  |  9,300 lines

  1. Interrupt List, part 2 of 8
  2. This compilation is Copyright (c) 1989,1990,1991,1992,1993 Ralf Brown
  3. ----------15---------------------------------
  4. INT 15 - Microsoft TSR Specification
  5.     No additional information available at this time.
  6. ----------1500-------------------------------
  7. INT 15 - CASSETTE - TURN ON TAPE DRIVE'S MOTOR (PC and PCjr only)
  8.     AH = 00h
  9. Return: CF set on error
  10.         AH = 86h no cassette present
  11.     CF clear if successful
  12. SeeAlso: AH=01h"CASSETTE"
  13. ----------1500-------------------------------
  14. INT 15 - Amstrad PC1512 - GET AND RESET MOUSE COUNTS
  15.     AH = 00h
  16. Return: CX = signed X count
  17.     DX = signed Y count
  18. ----------1500-------------------------------
  19. INT 15 - VMiX v2+ - INSTALLATION CHECK
  20.     AH = 00h
  21. Return: DX = 0798h if installed
  22.         AX = version (AH = major, AL = minor)
  23. ----------1500-------------------------------
  24. INT 15 - MultiDOS Plus - GIVE UP TIME SLICE
  25.     AH = 00h
  26. Note:    if issued by the highest-priority task while MultiDOS is using
  27.       priority-based rather than round-robin scheduling, control will be
  28.       returned to the caller immediately
  29. SeeAlso: AH=03h"MultiDOS",AX=1000h
  30. ----------1501-------------------------------
  31. INT 15 - CASSETTE - TURN OFF TAPE DRIVE'S MOTOR (PC and PCjr only)
  32.     AH = 01h
  33. Return: CF set on error
  34.         AH = 86h no cassette present
  35.     CF clear if successful
  36. SeeAlso: AH=00h"CASSETTE"
  37. ----------1501-------------------------------
  38. INT 15 - Amstrad PC1512 - WRITE DATA TO NON-VOLATILE RAM
  39.     AH = 01h
  40.     AL = NVRAM location (00h to 3Fh)
  41.     BL = NVRAM data value
  42. Return: AH = return code
  43.         00h OK
  44.         01h address bad
  45.         02h write error
  46. SeeAlso: AH=02h"Amstrad"
  47.  
  48. Format of NVRAM:
  49. Offset    Size    Description
  50.  00h    BYTE    time of day: seconds
  51.  01h    BYTE    alarm time: seconds
  52.  02h    BYTE    time of day: minutes
  53.  03h    BYTE    alarm time: minutes
  54.  04h    BYTE    time of day: hours
  55.  05h    BYTE    alarm time: hours
  56.  06h    BYTE    day of week, 1 = Sunday
  57.  07h    BYTE    day of month
  58.  08h    BYTE    month
  59.  09h    BYTE    year mod 100
  60.  0Ah    BYTE    RTC status register A
  61.         bit 7: set if date/time being updated
  62.             6-4: time base speed, default 010 = 32768 Hz
  63.             3-0: interrupt rate selection, default 0110 = 1024 Hz
  64.  0Bh    BYTE    RTC status register B
  65.         bit 7: clear if normal update, set if abort update
  66.             6: periodic interrupt enable
  67.             5: alarm interrupt enable
  68.             4: update end interrupt enable
  69.             3: square wave enable
  70.             2: date mode (clear = BCD, set = binary)
  71.             1: 24-hour format
  72.             0: daylight saving time enable
  73.  0Ch    BYTE    RTC status register C (read-only)
  74.         bit 7: IRQF flag
  75.             6: PF flag
  76.             5: AF flag
  77.             4: UF flag
  78.  0Dh    BYTE    RTC status register D
  79.         bit 7: battery good
  80.  0Eh  6 BYTEs    time and date machine last used
  81.  14h    BYTE    user RAM checksum
  82.  15h    WORD    Enter key scancode/ASCII code
  83.  17h    WORD    Forward delete key scancode/ASCII code
  84.  19h    WORD    Joystick fire button 1 scancode/ASCII code
  85.  1Bh    WORD    Joystick fire button 2 scancode/ASCII code
  86.  1Dh    WORD    mouse button 1 scancode/ASCII code
  87.  1Fh    WORD    mouse button 2 scancode/ASCII code
  88.  21h    BYTE    mouse X scaling factor
  89.  22h    BYTE    mouse Y scaling factor
  90.  23h    BYTE    initial VDU mode and drive count
  91.  24h    BYTE    initial VDU character attribute
  92.  25h    BYTE    size of RAM disk in 2K blocks
  93.  26h    BYTE    initial system UART setup byte
  94.  27h    BYTE    initial external UART setup byte
  95.  28h 24 BYTEs    available for user application
  96. Note:    bytes 00h-0Dh are the same on the IBM AT as they are used/updated by
  97.       the clock chip
  98. ----------1501-------------------------------
  99. INT 15 - VMiX - "sys_chanreq" - I/O CHANNEL OBJECT MANAGER
  100.     AH = 01h
  101.     STACK:    WORD    object ID of requestor
  102.         DWORD    pointer to ASCIZ name of requested method
  103.             "assign" assign channel to object
  104.             "deassign" deassign channel
  105.             "cursor" set cursor on/off
  106.             "init" initialize comm port
  107.             "open" open I/O channel
  108.             "position" set cursor position
  109.             "receive" get buffered packet from comm port
  110.             "send" send buffered packet to comm port
  111.             "vio" set current virtual I/O to specified channel
  112.             "window" make window at cursor position
  113.         ---if "assign"---
  114.          WORD    object UID
  115.          WORD    caller UID/PID
  116.          DWORD    CSL with port
  117.         ---if "deassign"---
  118.          WORD    channel ID
  119.         ---if "cursor"---
  120.          WORD    channel ID (must be a SRCSINK)
  121.          WORD    new state (0000h off, 0001h on)
  122.         ---if "init"---
  123.          WORD    channel ID (must be a SRCSINK)
  124.          WORD    comm port number (00h-03h)
  125.          WORD    UART init code
  126.         ---if "open"---
  127.          WORD    channel ID
  128.         ---if "position"---
  129.          WORD    channel ID (must be a SRCSINK)
  130.          WORD    position (high byte = row, low byte = column)
  131.         ---if "receive"---
  132.          DWORD    pointer to buffer
  133.         ---if "send"---
  134.          WORD    length of buffer
  135.          DWORD    pointer to buffer
  136.         ---if "vio"---
  137.          WORD    channel ID (must be a SRCSINK)
  138.         ---if "window"---
  139.          WORD    top left (high byte = row, low byte = column)
  140.          WORD    bottom right (high byte = row, low byte = column)
  141. Return: DX:AX -> IRP structure or 0000h:0000h 
  142. SeeAlso: AH=00h"VMiX",AH=02h"VMiX"
  143. ----------1501-------------------------------
  144. INT 15 - MultiDOS Plus - REQUEST RESOURCE SEMAPHORE
  145.     AH = 01h
  146.     AL = semaphore number (00h-3Fh)
  147. Return: AH = status
  148.         00h successful
  149.         02h invalid semaphore number
  150. Notes:    if the semaphore is not owned, ownership is assigned to the calling
  151.       task and the call returns immediately
  152.     if the semaphore is already owned by another task, the calling task
  153.       is placed on a queue for the semaphore and suspended until it can
  154.       become owner of the semaphore
  155.     semaphore 0 is used internally by MultiDOS to synchronize DOS access
  156. SeeAlso: AH=02h"MultiDOS",AH=10h"MultiDOS",AH=1Bh"MultiDOS"
  157. ----------1502-------------------------------
  158. INT 15 - CASSETTE - READ DATA
  159.     AH = 02h
  160.     CX = number of bytes to read
  161.     ES:BX -> buffer
  162. Return:    CF clear if successful
  163.         DX = number of bytes read
  164.         ES:BX -> byte following last byte read
  165.     CF set on error
  166.     AH = status
  167.         00h successful
  168.         01h CRC error
  169.         02h bad tape signals
  170.         04h no data
  171.         80h invalid command
  172.         86h no cassette present
  173. SeeAlso: AH=00h"CASSETTE",AH=03h"CASSETTE"
  174. ----------1502-------------------------------
  175. INT 15 - Amstrad PC1512 - READ DATA FROM NON-VOLATILE RAM
  176.     AH = 02h
  177.     AL = NVRAM location (00h to 3Fh)
  178. Return: AH = return code
  179.         00h OK
  180.         01h address bad
  181.         02h checksum error
  182.     AL = NVRAM data value
  183. SeeAlso: AH=01h"Amstrad"
  184. ----------1502-------------------------------
  185. INT 15 - VMiX - "sys_memreq" - MEMORY OBJECT MANAGER
  186.     AH = 02h
  187.     STACK:    WORD    object ID of requestor
  188.         DWORD    pointer to ASCIZ name of requested method
  189.             "assign" allocate low memory block
  190.             "assign extended" allocate extended memory pages
  191.             "assign gdt" allocate GDT selector
  192.             "paged" allocate low paged memory
  193.             "paged extended" alllocate extended memory pages
  194.             "deassign" free memory block
  195.             "deassign gdt" free GDT selector
  196.             "getvpage" get physical address for virtual page
  197.             "setvpage" set physical address for virtual page
  198.             "info" get VMiX memory usage info block
  199.             "move" move contents of 32-bit memory
  200.             "newmcb" make new DOS memory control block
  201.             "owner" get process ID of MCB or PSP owner
  202.             "umb" allocate upper memory block
  203.             "video" toggle system use of vidoe memory and get stat
  204.         ---if "assign"---
  205.          WORD    number of objects
  206.          WORD    size in bytes (multiple of 512 bytes)
  207.         ---if "assign extended"---
  208.          WORD    number of objects
  209.          WORD    size in bytes (multiple of 4K)
  210.         ---if "assign gdt"---
  211.          WORD    access type (low byte)
  212.          WORD    segment size in paragraphs
  213.          DWORD    pointer to start of physical segment
  214.         ---if "paged"---
  215.          WORD    number of 512-byte pages
  216.         ---if "paged extended"
  217.          WORD    number of 4K pages
  218.         ---if "deassign"---
  219.          DWORD    pointer returned by previous allocation call
  220.         ---if "deassign gdt"---
  221.          WORD    GDT selector
  222.         ---if "getvpage"---
  223.          WORD    owner's process ID
  224.          DWORD    pointer to buffer for page structure (struct VPGE)
  225.         ---if "setvpage"---
  226.          WORD    owner's process ID
  227.          DWORD    pointer to new page structure (struct VPGE)
  228.         ---if "info"---
  229.          no additional arguments
  230.         ---if "move"
  231.          DWORD    32-bit source address
  232.          DWORD    32-bit destination address
  233.          WORD    number of words to move
  234.         ---if "newmcb"---
  235.          DWORD    pointer to new MCB's location
  236.          WORD    size of memory block
  237.          DWORD    pointer to ASCIZ name string (max 8 chars)
  238.         ---if "owner"---
  239.          WORD    MCB or PSP segment
  240.         ---if "umb"---
  241.          WORD    size in paragraphs
  242.         ---if "video"---
  243.          no additional arguments
  244. Return: DX:AX -> memory block or VPGE struct or 0000h:0000h
  245. SeeAlso: AH=00h"VMiX",AH=01h"VMiX"
  246. ----------1502-------------------------------
  247. INT 15 - MultiDOS Plus - RELEASE RESOURCE SEMAPHORE
  248.     AH = 02h
  249.     AL = semaphore number (00h-3Fh)
  250. Return: AH = status
  251.         00h successful
  252.         01h not semaphore owner
  253.         02h invalid semaphore number
  254. Notes:    if any tasks are waiting for the semaphore, the first task on the wait
  255.       queue will become the new owner and be reawakened
  256.     do not use within an interrupt handler
  257. SeeAlso: AH=01h"MultiDOS",AH=10h"MultiDOS",AH=1Ch"MultiDOS"
  258. ----------1503-------------------------------
  259. INT 15 - CASSETTE - WRITE DATA (PC and PCjr only)
  260.     AH = 03h
  261.     CX = number of bytes to write
  262.     ES:BX -> data buffer
  263. Return: CF clear if successful
  264.         ES:BX -> byte following last byte written
  265.     CF set on error
  266.     AH = status (see AH=02h"CASSETTE")
  267.     CX = 0000h
  268. SeeAlso: AH=00h"CASSETTE",AH=02h"CASSETTE"
  269. ----------1503-------------------------------
  270. INT 15 - Amstrad PC1512 - WRITE VDU COLOR PLANE WRITE REGISTER
  271.     AH = 03h
  272.     AL = value (I,R,G,B bits)
  273. SeeAlso: AH=04h"Amstrad"
  274. ----------1503-------------------------------
  275. INT 15 - VMiX - "sys_pinput" - PROMPTED CONSOLE INPUT
  276.     AH = 03h
  277.     STACK:    DWORD    pointer to ASCII prompt
  278.         WORD    field outline character
  279.         WORD    length of input field (max 7Fh)
  280.         DWORD    address of pointer to input buffer
  281. Return: AX = length of input (input buffer is padded with blanks)
  282. SeeAlso: AH=04h"VMiX"
  283. ----------1503-------------------------------
  284. INT 15 - MultiDOS Plus - SUSPEND TASK FOR INTERVAL
  285.     AH = 03h
  286.     DX = number of time slices to remain suspended
  287. Return: after specified interval has elapsed
  288. Note:    when priority-based scheduling is in use, high-priority tasks should
  289.       use this function to yield the processor
  290. SeeAlso: AH=00h"MultiDOS",AH=0Ah"MultiDOS"
  291. ----------1504-------------------------------
  292. INT 15 - SYSTEM - BUILD ABIOS SYSTEM PARAMETER TABLE (PS)
  293.     AH = 04h
  294.     ES:DI -> results buffer length 20h for System Parameter Table
  295.     DS = segment containing ABIOS RAM extensions (zero if none)
  296. Return: AH = 00h success: results at ES:DI
  297.     CF set on failure
  298. SeeAlso: AH=05h"ABIOS",C1h
  299.  
  300. Format of ABIOS System Parameter Table:
  301. Offset    Size    Description
  302.  00h    DWORD    FAR address of ABIOS Common Start Routine
  303.  04h    DWORD    FAR address of ABIOS Interrupt Routine
  304.  08h    DWORD    FAR address of ABIOS Time-out Routine
  305.  0Ch    WORD    number of bytes of stack required by this ABIOS implementation
  306.  0Eh 16 BYTEs    reserved
  307.  1Eh    WORD    number of entries in initialization table
  308. ----------1504-------------------------------
  309. INT 15 - Amstrad PC1512 - WRITE VDU COLOR PLANE READ REGISTER
  310.     AH = 04h
  311.     AL = value (RDSEL1 and RDSEL0)
  312. SeeAlso: AH=03h"Amstrad",05h"Amstrad"
  313. ----------1504-------------------------------
  314. INT 15 - VMiX - "sys_vprintf" - FORMATTED OUTPUT TO STREAM
  315.     AH = 04h
  316.     STACK:    DWORD    control string
  317.         DWORD    array of arguments
  318. SeeAlso: AH=03h"VMiX"
  319. ----------1504-------------------------------
  320. INT 15 - MultiDOS Plus - SEND MESSAGE TO ANOTHER TASK
  321.     AH = 04h
  322.     AL = mailbox number (00h-3Fh)
  323.     CX = message length in bytes
  324.     DS:SI -> message
  325. Return: AH = status
  326.         00h successful
  327.         01h out of message memory
  328.         02h invalid mailbox number
  329. Note:    the message is copied into a system buffer; the caller may immediately
  330.       reuse its buffer
  331. SeeAlso: AH=05h"MultiDOS"
  332. ----------1505-------------------------------
  333. INT 15 - SYSTEM - BUILD ABIOS INITIALIZATION TABLE (PS)
  334.     AH = 05h
  335.     ES:DI -> results buffer length (18h * Number_of_Entries)
  336.     DS = segment containing ABIOS RAM extensions (zero if none)
  337. Return: AH = 00h success: results at ES:DI
  338.     CF set on failure
  339. SeeAlso: AH=04h"ABIOS",C1h
  340.  
  341. Format of one entry of ABIOS Initialization Table:
  342. Offset    Size    Description
  343.  00h    WORD    device ID
  344.  02h    WORD    number of Logical IDs
  345.  04h    WORD    Device Block length (zero for ABIOS patch or extension)
  346.  06h    DWORD    -> init routine for Device Block and Function Transfer Table
  347.  0Ah    WORD    request block length
  348.  0Ch    WORD    Function Transfer Table length (zero for a patch)
  349.  0Eh    WORD    Data Pointers length (in Common Data Area)
  350.  10h    BYTE    secondary device ID (hardware level this ABIOS ver supports)
  351.  11h    BYTE    revision (device driver revision level this ABIOS supports)
  352.  12h  6 BYTEs    reserved
  353. ----------1505-------------------------------
  354. INT 15 - Amstrad PC1512 - WRITE VDU GRAPHICS BORDER REGISTER
  355.     AH = 05h
  356.     AL = value (I,R,G,B bits)
  357. SeeAlso: AH=04h"Amstrad"
  358. ----------1505-------------------------------
  359. INT 15 - VMiX - "sys_getpid" - GET PROCESS ID OF CURRENT PROCESS
  360.     AH = 05h
  361. Return: AX = process ID
  362. SeeAlso: AH=06h"VMiX",AH=0Bh"VMiX"
  363. ----------1505-------------------------------
  364. INT 15 - MultiDOS Plus - CHECK MAILBOX
  365.     AH = 05h
  366.     AL = mailbox number (00h-3Fh)
  367. Return: AH = status
  368.         00h successful
  369.         DX = length of first message in queue, 0000h if no message
  370.         02h invalid mailbox number
  371. SeeAlso: AH=04h"MultiDOS",AH=06h"MultiDOS"
  372. ----------1506-------------------------------
  373. INT 15 - Amstrad PC1512 - GET ROS VERSION NUMBER
  374.     AH = 06h
  375. Return: BX = version number
  376. ----------1506-------------------------------
  377. INT 15 - VMiX - "sys_getpcb" - GET POINTER TO PROCESS CONTROL BLOCK
  378.     AH = 06h
  379.     STACK:    WORD    process ID
  380. Return: DX:AX -> process control block
  381. SeeAlso: AH=05h"VMiX",AH=07h"VMiX",AH=08h"VMiX"
  382. ----------1506-------------------------------
  383. INT 15 - MultiDOS Plus - READ MAILBOX
  384.     AH = 06h
  385.     AL = mailbox number (00h-3Fh)
  386.     CX = size of buffer in bytes
  387.     ES:DI -> buffer for message
  388. Return: AH = status
  389.         00h successful
  390.         CX = number of bytes copied
  391.         DX = actual length of message
  392.         02h invalid mailbox number
  393. Note:    if the caller's buffer is not large enough, the message is truncated
  394.       and the remainder is lost
  395. SeeAlso: AH=04h"MultiDOS",AH=05h"MultiDOS"
  396. ----------1507-------------------------------
  397. INT 15 - VMiX - "sys_getocb" - GET POINTER TO OBJECT CONTROL BLOCK
  398.     AH = 07h
  399.     STACK:    WORD    object type
  400. Return: DX:AX -> object control block
  401. SeeAlso: AH=06h"VMiX",AH=08h"VMiX"
  402. ----------1507-------------------------------
  403. INT 15 - MultiDOS Plus - SPAWN INTERNAL TASK (CREATE NEW THREAD)
  404.     AH = 07h
  405.     BX:CX = entry point of new task
  406.     DX = stack size in paragraphs
  407. Return: AH = status
  408.         00h successful
  409.         01h no free task control blocks
  410.         02h no free memory for task's stack
  411. Note:    execution returns immediately to calling task
  412. SeeAlso: AH=08h"MultiDOS",AH=09h"MultiDOS",AH=13h"MultiDOS"
  413. ----------1508-------------------------------
  414. INT 15 - VMiX - "sys_getccb" - GET CHANNEL CONTROL BLOCK
  415.     AH = 08h
  416.     STACK:    WORD    channel ID
  417. Return: DX:AX -> channel control block
  418. SeeAlso: AH=06h"VMiX",AH=07h"VMiX"
  419. ----------1508-------------------------------
  420. INT 15 - MultiDOS Plus - TERMINATE INTERNAL TASK (KILL THREAD)
  421.     AH = 08h
  422. Return: calling task terminated, so execution never returns to caller
  423. Notes:    an internal task must be terminated with this function rather than a
  424.       DOS termination function
  425.     task's stack space is returned to parent task's memory pool
  426. SeeAlso: AH=07h"MultiDOS"
  427. ----------1509-------------------------------
  428. INT 15 - VMiX - "sys_getqueue" - GET ID OF QUEUED ELEMENT
  429.     AH = 09h
  430.     STACK:    WORD    queue ID (0 = process queue, 1 = object, 3 = type)
  431.         WORD    subqueue ID
  432. Return: AX = queue ID
  433. SeeAlso: AH=0Ah"VMiX"
  434. ----------1509-------------------------------
  435. INT 15 - MultiDOS Plus - CHANGE TASK'S PRIORITY
  436.     AH = 09h
  437.     AL = new priority
  438. Note:    the priority has different meanings depending on whether priority-
  439.       based or round-robin scheduling is used
  440. SeeAlso: AH=07h"MultiDOS"
  441. ----------150A-------------------------------
  442. INT 15 - VMiX - "sys_qetqnext" - GET ID OF NEXT QUEUED ELEMENT
  443.     AH = 0Ah
  444.     STACK:    WORD    queue ID (0 = process queue, 1 = object, 3 = type)
  445.         WORD    ID of current element in queue chain
  446. Return: AX = ID of next element
  447. SeeAlso: AH=09h"VMiX",AH=0Fh"VMiX"
  448. ----------150A-------------------------------
  449. INT 15 - MultiDOS Plus - CHANGE TIME SLICE INTERVAL
  450.     AH = 0Ah
  451.     AL = new interval
  452.         00h = 55.0 ms (default)
  453.         80h = 27.5 ms
  454.         40h = 13.75 ms
  455.         20h = 6.88 ms
  456.         10h = 3.44 ms
  457.         08h = 1.72 ms
  458. SeeAlso: AH=03h"MultiDOS"
  459. ----------150B-------------------------------
  460. INT 15 - VMiX - "sys_sysreq" - SYSTEM CONFIGURATION MANAGER
  461.     AH = 0Bh
  462.     STACK:    WORD    caller's UID
  463.         DWORD    pointer to ASCIZ name of requested method
  464.             "abort" abort current send/receive on comm port
  465.             "block" start/end critical section
  466.             "close" terminate interrupt-drive comm I/O
  467.             "open" prepare comm port for interrupt-driven I/O
  468.             "delay" set delay timer and wait
  469.             "hibernate" put process to sleep
  470.             "ints" enable/disable interrupt-driven INT 14h
  471.             "length" get current send/receive buffer offsets
  472.             "kswitch" switch stacks
  473.             "numproc" get number of active processes
  474.             "protocol" set protocol function for comm interrupts
  475.             "relocate" set/reset VMiX flag for relocating to himem
  476.             "status" get current open comm port status
  477.             "wake" awaken a process
  478.             "xport" get comm port polled for logins
  479.         ---if "abort"---
  480.          no additional arguments
  481.         ---if "block"---
  482.          WORD    0000h end, 0001h start
  483.         ---if "close"---
  484.          no additional arguments
  485.         ---if "open"---
  486.          WORD    comm port (00h-03h)
  487.          WORD    BIOS parameter byte (see INT 14/AH=00h), except
  488.             bits 7-5 = 000 for 19200, 001 for 38400, 011 for 115200
  489.         ---if "delay"---
  490.          WORD    time in seconds
  491.         ---if "hibernate"---
  492.          WORD    process ID
  493.         ---if "ints"---
  494.          WORD    0000h if no, 0001h if yes
  495.         ---if "length","numproc","relocate","status","xport"---
  496.          no additional arguments
  497.         ---if "kswitch"---
  498.          DWORD    pointer to new stack
  499.         ---if "protocol"---
  500.          DWORD    pointer to function (must be in low "assign"ed memory
  501.             when in 386 mode)
  502.         ---if "wake"---
  503.          WORD    process ID
  504. Return: DX:AX -> result or 0000h:0000h
  505.         ---if "length"---
  506.          BYTE    receive offset
  507.          BYTE    send offset
  508.         ---if "kswitch"---
  509.          DWORD    old stack pointer
  510.         ---if "numproc"---
  511.          WORD    number of active processes
  512.         ---if "status"---
  513.          current open comm port status
  514.         ---if "xport"---
  515.          current comm port being polled for logins
  516. SeeAlso: AH=05h"VMiX",AH=0Eh"VMiX"
  517. ----------150B-------------------------------
  518. INT 15 - MultiDOS Plus - FORCE DISPLAY OUTPUT TO PHYSICAL SCREEN MEMORY
  519.     AH = 0Bh
  520. Notes:    sets calling task's screen pointer to actual screen memory; the pointer
  521.       may be restored with AH=0Ch
  522.     caller's video mode must be same as foreground task's video mode
  523.     any text written while in the background will be saved to the
  524.       foreground task's virtual screen when it switches to the background
  525.     useful if a background task wants to display a message on the
  526.       foreground screen
  527. SeeAlso: AH=0Ch"MultiDOS"
  528. ----------150C-------------------------------
  529. INT 15 - VMiX - "sys_getstack" - GET POINTER TO PROCESS TSS STACK
  530.     AH = 0Ch
  531.     STACK:    WORD    process ID
  532. Return: DX:AX -> TSS stack store
  533. SeeAlso: AH=00"VMiX"
  534. ----------150C-------------------------------
  535. INT 15 - MultiDOS Plus - RESTORE OLD VIDEO DISPLAY MEMORY
  536.     AH = 0Ch
  537. Note:    restores task's screen pointer saved by AH=0Bh; must not be called
  538.       unless AH=0Bh has been called first
  539. SeeAlso: AH=0Bh"MultiDOS"
  540. ----------150D-------------------------------
  541. INT 15 - VMiX - "sys_spawn" - START A CHILD PROCESS JOB SHELL
  542.     AH = 0Dh
  543.     STACK:    DWORD    ASCIZ string starting with requested I/O channel and
  544.             followed by standard VMiX shell command string
  545. Return: AX = process ID or error code "SYS_ERROR"
  546. Note:    the maximum string length is 7Fh characters
  547. SeeAlso: AH=0Eh"VMIX",AH=11h"VMiX",INT 21/AH=4Bh
  548. ----------150D-------------------------------
  549. INT 15 - MultiDOS Plus - DISABLE MULTITASKING
  550.     AH = 0Dh
  551. Note:    calling task receives all time slices until AH=0Eh is called; this
  552.       allows time-critical events or nonreentrant code to be processed
  553. SeeAlso: AH=0Eh"MultiDOS",AH=10h"MultiDOS",AX=101Bh,AH=20h"MultiDOS"
  554. ----------150E-------------------------------
  555. INT 15 - VMiX - "sys_kill" - HARD TERMINATE PROCESS
  556.     AH = 0Eh
  557.     STACK:    WORD    process ID
  558. Return: AX = status (SYS_OK or SYS_ERROR)
  559. SeeAlso: AH=0Bh"VMiX",AH=0Dh"VMIX"
  560. ----------150E-------------------------------
  561. INT 15 - MultiDOS Plus - ENABLE MULTITASKING
  562.     AH = 0Eh
  563. SeeAlso: AH=0Dh"MultiDOS",AX=101Ch,AH=20h"MultiDOS"
  564. ----------150F-------------------------------
  565. INT 15 C - SYSTEM - FORMAT UNIT PERIODIC INTERRUPT (PS ESDI drives only)
  566.     AH = 0Fh
  567.     AL = phase code
  568.         00h reserved
  569.         01h surface analysis
  570.         02h formatting
  571. Return: CF clear if formatting should continue, set if it should terminate
  572. Note:    called during ESDI drive formatting after each cylinder is completed
  573. SeeAlso: INT 13/AH=1Ah
  574. ----------150F-------------------------------
  575. INT 15 - VMiX - "sys_getqkey" - GET KEY FIELD OF QUEUED ELEMENT
  576.     AH = 0Fh
  577.     STACK:    WORD    queue ID (0 = process queue, 1 = object q, 3 = type q)
  578.         WORD    ID of element in queue chain
  579. Return: AX = key
  580. SeeAlso: AH=0Ah"VMiX"
  581. ----------150F-------------------------------
  582. INT 15 - MultiDOS Plus - EXECUTE A MULTIDOS PLUS COMMAND
  583.     AH = 0Fh
  584.     DS:BX -> ASCIZ command
  585. Return: after command has been processed
  586. Notes:    specified string is executed as if it had been typed at the MultiDOS
  587.       command prompt
  588.     the task is placed on a queue which MultiDOS examines periodically and
  589.       is suspended until MultiDOS has processed the command
  590.     all lowercase characters up to the first blank are converted to upper
  591.       case within the given buffer
  592. ----------1510-------------------------------
  593. INT 15 - VMiX - "sys_virtual" - EXECUTE CONFORMING FUNCTION IN PROTECTED MODE
  594.     AH = 10h
  595.     STACK:    DWORD    pointer to function
  596.           N    WORDs    function args
  597. Return: AX = function's return value??? (not specified in documentation)
  598. Note:    while the function is executing, the following global descriptors are
  599.       available:
  600.         20h stack segment
  601.         38h code segment of function
  602.         40h data alias for function's code segment
  603.       additional GDT descriptors can be allocated using AH=02h with
  604.       function "assign gdt"
  605. SeeAlso: AH=02h"VMiX",AH=51h"VMiX"
  606. ----------1510-------------------------------
  607. INT 15 - MultiDOS Plus - TEST RESOURCE SEMAPHORE
  608.     AH = 10h
  609.     AL = semaphore number (00h-3Fh)
  610. Return: AH = status
  611.         00h semaphore not in use
  612.         01h semaphore owned by another task
  613.         02h invalid semaphore number
  614.         03h semaphore owned by caller
  615. SeeAlso: AH=02h"MultiDOS",AH=0Dh"MultiDOS",AH=1Dh"MultiDOS"
  616. ----------151000-----------------------------
  617. INT 15 - TopView - "PAUSE" - GIVE UP CPU TIME
  618.     AX = 1000h
  619. Return: after other processes run
  620. Note:    under DESQview, if the process issuing this call has hooked INT 08h,
  621.       the current time-slice is set to expire at the next clock tick rather
  622.       than immediately
  623. SeeAlso: AH=00h"MultiDOS",AX=5305h,INT 21/AH=89h,INT 21/AH=EEh"DoubleDOS"
  624. SeeAlso: INT 2F/AX=1680h,INT 60/DI=0106h,INT 62/AH=01h,INT 7A/BX=000Ah
  625. SeeAlso: INT 7F/AH=E8h
  626. ----------151001-----------------------------
  627. INT 15 - TopView - "GETMEM" - ALLOCATE "SYSTEM" MEMORY
  628.     AX = 1001h
  629.     BX = number of bytes to allocate
  630. Return: ES:DI -> block of memory or 0000h:0000h (DV v2.26+)
  631.     AX = status (DV v2.42)
  632.         0000h successful
  633.         0001h failed
  634. Note:    use SETERROR (AX=DE15h) to avoid a user prompt if there is insufficient
  635.       common memory.  Under DV v2.42, this call never generates a user
  636.       prompt regardless of the SETERROR value; instead, it always returns
  637.       AX=0001h and ES:DI=0000h:0000h if out of memory
  638. SeeAlso: AX=1002h,AX=102Eh,AX=DE0Ch,AX=DE15h
  639. ----------151002-----------------------------
  640. INT 15 - TopView - "PUTMEM" - DEALLOCATE "SYSTEM" MEMORY
  641.     AX = 1002h
  642.     ES:DI -> previously allocated block
  643. Return: block freed
  644. SeeAlso: AX=1001h,AX=DE0Dh
  645. ----------151003-----------------------------
  646. INT 15 - TopView - "PRINTC" - DISPLAY CHARACTER/ATTRIBUTE ON SCREEN
  647.     AX = 1003h
  648.     BH = attribute
  649.     BL = character
  650.     DX = segment of object handle for window
  651. Note:    BX=0 does not display anything, it only positions the hardware cursor
  652. ----------1510-------------------------------
  653. INT 15 - TopView - UNIMPLEMENTED IN DV 2.x
  654.     AH = 10h
  655.     AL = 04h thru 12h
  656. Return: pops up "Programming error" window in DV 2.x
  657. ----------151013-----------------------------
  658. INT 15 - TopView - "GETBIT" - DEFINE A 2ND-LEVEL INTERRUPT HANDLER
  659.     AX = 1013h
  660.     ES:DI -> FAR service routine
  661. Return: BX = bit mask indicating which bit was allocated
  662.          0000h if no more bits available
  663. SeeAlso: AX=1014h,AX=1015h
  664. Note:    only a few TopView/DESQview API calls are allowed during a hardware
  665.       interrupt; if other calls need to be made, the interrupt handler
  666.       must schedule a 2nd-level interrupt with "SETBIT" (AX=1015h)
  667. ----------151014-----------------------------
  668. INT 15 - TopView - "FREEBIT" - UNDEFINE A 2ND-LEVEL INTERRUPT HANDLER
  669.     AX = 1014h
  670.     BX = bit mask from INT 15/AX=1013h
  671. SeeAlso: AX=1013h,AX=1015h
  672. ----------151015-----------------------------
  673. INT 15 - TopView - "SETBIT" - SCHEDULE ONE OR MORE 2ND-LEVEL INTERRUPTS
  674.     AX = 1015h
  675.     BX = bit mask for interrupts to post
  676. Return: indicated routines will be called: (DV 2.0x) at next task switch
  677.                        (DV 2.2x) immediately on return from
  678.                              hardware interrupt
  679. SeeAlso: AX=1013h,AX=1014h
  680. Notes:    this is one of the few TopView calls which are allowed from a hardware
  681.       interrupt handler
  682.     the handler will be called with ES containing the segment of the handle
  683.       of the next task to be executed; on return, ES must be the segment of
  684.       a task handle
  685. ----------151016-----------------------------
  686. INT 15 - TopView - "ISOBJ" - VERIFY OBJECT HANDLE
  687.     AX = 1016h
  688.     ES:DI = possible object handle
  689. Return: BX = FFFFh if ES:DI is a valid object handle
  690.          0000h if ES:DI is not
  691. Note:    under DESQview versions prior to 2.50, an object handle is always a
  692.       pointer to the object; for versions 2.50 and up, only task handles
  693.       are always pointers (other handles may consist of a unique object
  694.       number and offset into DESQview's common memory)
  695. SeeAlso: AX=DE14h,AX=DE2Bh,AX=DE2Ch
  696.  
  697. Format of object:
  698. Offset    Size    Description
  699.  00h    WORD    offset in common memory of previous object of same type
  700.  02h    WORD    offset in common memory of next object of same type
  701.  04h    WORD    signature FEDCh (DV 2.42-)
  702.         signature FEDCh or object number (DV 2.50+)
  703.  06h    WORD    object type
  704.         00h window/task
  705.         01h mailbox
  706.         02h keyboard
  707.         03h timer
  708.         04h pointer
  709.         05h panel
  710.         06h objectq
  711.  08h    DWORD    object handle to return to caller
  712.  0Ch    DWORD    canonicalized object address (segment = common memory)
  713.  10h    WORD    offset in common memory of owning task
  714.  12h    WORD    mapping context
  715.     remainder varies by object type and DESQview version
  716. ---v2.42 keyboard object---
  717.  14h    WORD    flag bits (see also AH=12h/BH=0Ah"OBJECT")
  718.         bit 15: keyboard opened
  719.  16h  4 BYTEs    ???
  720.  1Ah    WORD    priority in OBJECTQ???
  721.  1Ch    ...
  722.  25h    WORD    offset in common memory of ??? task
  723.  27h  4 BYTEs    ???
  724. ---v2.42 objectq object---
  725.  14h    WORD    flag bits (see also AH=12h/BH=0Ah"OBJECT")
  726.         bit 15: OBJECTQ opened
  727.  16h  2 BYTEs    ???
  728.  18h    WORD    offset in common memory of ??? task
  729.  1Ah  6 BYTEs    ???
  730. ---v2.42 mailbox object---
  731.  14h    WORD    flag bits (see also AH=12h/BH=0Ah"OBJECT")
  732.         bit 15: mailbox opened
  733.  1Ah    WORD    priority in OBJECTQ???
  734.  1Ch  6 BYTEs    ???
  735.  22h    WORD    offset in common memory of mailbox name (counted string)
  736.         0000h if no name
  737.      <= 5 BYTEs    ???
  738. ---v2.22-2.42 window/task object---
  739.  14h    BYTE    00h window, 01h task
  740.  15h    BYTE    internal (not Switch menu) window number???
  741.  16h    BYTE    internal (not Switch menu) window number???
  742.  17h    WORD    segment of internal window record
  743.  19h  2 BYTEs    ???
  744.  1Bh    BYTE    cursor row
  745.  1Ch    BYTE    cursor column
  746.  1Dh  2 BYTEs    ???
  747.  1Fh    BYTE    window height (logical)
  748.  20h    BYTE    window width (logical)
  749.  21h    BYTE    window position, row
  750.  22h    BYTE    window position, column
  751.  23h    BYTE    window height (visible)
  752.  24h    BYTE    window width (visible)
  753.  25h    BYTE    row of top of frame (or window if unframed)
  754.  26h    BYTE    column of left of frame (or window if unframed)
  755.  27h    BYTE    window height (physical, including frame)
  756.  28h    BYTE    window width (physical, including frame)
  757.  29h 10 BYTEs    ???
  758.  33h    BYTE    minimum height of window
  759.  34h    BYTE    minimum width of window
  760.  35h    BYTE    maximum height of window
  761.  36h    BYTE    maximum width of window
  762.  37h  3 BYTEs    ???
  763.  3Ah  8 BYTEs    window frame characters: ul,ur,ll,lr,t,b,l,r
  764.  42h 24 BYTEs    attributes???
  765.  5Ah  8 BYTEs    window frame characters: ul,ur,ll,lr,t,b,l,r
  766.  62h  6 BYTEs    ???
  767.  68h    WORD    offset in common memory of window name or 0000h if untitled
  768.  6Ah    WORD    length of window name
  769.  6Ch  2 BYTEs    ???
  770.  6Eh    WORD    offset of logical cursor in window (in character cells)
  771.  70h    DWORD    pointer to field table for window
  772.  74h  3 BYTEs    ???
  773.  77h    BYTE    number of last-visited field
  774.  78h    DWORD    pointer to field table entry for last-visited field
  775.  7Ch  3 BYTEs    ???
  776.  7Fh    BYTE    select field marker character
  777.  80h    BYTE    ??? bit flags
  778.         bit 0: allow ECh window stream opcode to change reverse logattr
  779.         bit 1: alternate field processing mode selected
  780.  81h    BYTE    ???
  781.  82h    DWORD    notification function (manager stream opcode 8Ah)
  782.         no notification if segment = 0000h
  783.  86h    DWORD    notification argument (manager stream opcode 8Bh)
  784.  8Ah    WORD    offset in common memory of ??? window object or 0000h
  785.  8Ch    WORD    offset in common memory of ??? window object or 0000h
  786.  8Eh    WORD    offset in common memory of ??? window object or 0000h
  787.  8Ch  6 BYTEs    ???
  788.  ---task object only
  789.  92h 11 BYTEs    ???
  790.  9Bh    BYTE    ??? bit flags
  791.         bit 3: ???
  792.         bit 6: perform protected-attribute processing on select fields
  793.  9Ch    BYTE    ???
  794.  9Dh    WORD    offset in common memory of current register save record
  795.         (see below).  No register save record in use if < 01C0h
  796.  9Fh    WORD    offset in common memory of task's keyboard object
  797.  A1h    WORD    offset in common memory of task's OBJECTQ object
  798.  A3h    WORD    offset in common memory of task's mailbox object
  799.  A5h    WORD    semaphore: FFFFh if on user stack, else on task's private stack
  800.  A7h    DWORD    user's SS:SP
  801.  ABh    WORD    task's private SP (SS read from offset 0Ah)
  802.  ADh  6 BYTEs    ???
  803.  B3h    BYTE    ??? bit flags
  804.         bit 0: run in foreground only
  805.  B4h  2 BYTEs    ???
  806.  B6h    BYTE    task status (see AX=DE2Ch)
  807.  B7h  9 BYTEs    ???
  808.  C0h    WORD    head pointer for keyboard buffer (wraps back to 00h after 80h)
  809.  C2h    WORD    tail pointer for keyboard buffer (wraps back to 00h after 80h)
  810.  C4h  2 BYTEs    ??? (0000h)
  811.  C6h    WORD    segment of keyboard buffer for task
  812.  C8h    WORD    offset in common memory of ??? keyboard object
  813.  CAh    BYTE    ???
  814.  CBh    WORD    offset in common memory of ??? object
  815.  CEh    BYTE    ??? flag
  816.  CFh    WORD    offset in common memory of default notify window for task
  817.         or 0000h if none
  818.  D1h  4 BYTEs    ???
  819.  D5h    BYTE    window number on Switch Window menu
  820.  D6h  5 BYTEs    ???
  821.  DBh    WORD    offset in common memory of ??? object
  822.  DDh  2 BYTEs    ???
  823.  DFh    WORD    API level for task
  824.  E1h    WORD    offset in common memory of ??? keyboard object
  825.  E7h    WORD    segment of ???
  826.  FDh    BYTE    ???
  827. 119h    DWORD    SS:SP for ???
  828. 11Dh  4 BYTEs    ???
  829. 121h    DWORD    pointer to ???
  830. 125h 35 BYTEs    ???
  831. ---v2.22
  832. 145h        task's default keyboard object
  833. ---v2.42
  834. 148h    WORD    ???
  835. 14Ah    BYTE    ???
  836. 14Dh 42 BYTEs    task's default keyboard object
  837. 177h 32 BYTEs    task's ObjectQ object
  838. 197h 41 BYTEs    task's default mailbox object
  839. 1C0h 24 BYTEs    first register save record
  840. 450h    --    default top of private stack
  841.  
  842. Format of Register Save Record:
  843. Offset    Size    Description
  844.  00h    WORD    AX
  845.  02h    WORD    BX
  846.  04h    WORD    CX
  847.  06h    WORD    DX
  848.  08h    WORD    DI
  849.  0Ah    WORD    SI
  850.  0Eh    WORD    DS
  851.  10h    WORD    ES
  852.  12h    DWORD    return address
  853.  16h    WORD    original flags
  854. ----------151017-----------------------------
  855. INT 15 - TopView - UNIMPLEMENTED IN DV 2.x
  856.     AX = 1017h
  857. Return: pops up "Programming error" window in DV 2.x
  858. ----------151018-----------------------------
  859. INT 15 - TopView - "LOCATE" - FIND WINDOW AT A GIVEN SCREEN LOCATION
  860.     AX = 1018h
  861.     BH = column
  862.     BL = row
  863.     ES = segment of object handle for window below which to search
  864.          0000h = start search with topmost window
  865. Return: ES = segment of object handle for window which is visible at the
  866.            indicated position, or covered by indicated window
  867.        = 0000h no window
  868. SeeAlso: AX=1023h,AX=1024h
  869. ----------151019-----------------------------
  870. INT 15 - TopView - "SOUND" - MAKE TONE
  871.     AX = 1019h
  872.     BX = frequency in Hertz (0000h = silence)
  873.     CX = duration in clock ticks (18.2 ticks/sec)
  874. Return: immediately, tone continues to completion
  875. Notes:    if another tone is already playing, the new tone does not start until
  876.       completion of the previous one.  Up to 32 tones may be queued before
  877.       the process is blocked until a note completes.
  878.     in DV 2.00, the lowest tone allowed is 20 Hz
  879.     if CX = 0, the current note is cancelled; if BX = 0 as well, all queued
  880.       notes are also cancelled
  881. SeeAlso: INT 16/AH=73h
  882. ----------15101A-----------------------------
  883. INT 15 - TopView - "OSTACK" - SWITCH TO TASK'S INTERNAL STACK
  884.     AX = 101Ah
  885. Return: stack switched
  886. Notes:    this call may not be nested; a second call must be preceded by a call
  887.       to "USTACK" (AX=1025h)
  888.     while TopView requires many API calls to be executed while on the
  889.       task's internal stack, DESQview allows those calls to be executed
  890.       regardless of the current stack
  891. SeeAlso: AX=1025h
  892. ----------15101B-----------------------------
  893. INT 15 - TopView - "BEGINC" - BEGIN CRITICAL REGION
  894.     AX = 101Bh
  895. Return: task-switching temporarily disabled
  896. Notes:    will not task-switch until "ENDC" (AX = 101Ch) called unless task
  897.       voluntarily releases the CPU (upon regaining the CPU, task-switching
  898.       will again be disabled)
  899.     suspends the caller until DOS is free
  900. SeeAlso: AH=0Dh"MultiDOS",AX=101Ch,AX=DE13h,AX=DE1Ch,INT 2F/AX=1681h
  901. SeeAlso: INT 60/DI=0602h
  902. ----------15101C-----------------------------
  903. INT 15 - TopView - "ENDC" - END CRITICAL REGION
  904.     AX = 101Ch
  905. Return: task-switching enabled
  906. Note:    this API call may be made from within a hardware interrupt handler
  907. SeeAlso: AX=101Bh,AX=DE13h,AX=DE1Bh,INT 2F/AX=1682h,INT 60/DI=0603h
  908. ----------15101D-----------------------------
  909. INT 15 - TopView - "STOP" - STOP TASK
  910.     AX = 101Dh
  911.     ES = segment of object handle for task to be stopped
  912.          (== handle of main window for that task)
  913. Return: indicated task will not get any CPU time until restarted with AX=101Eh
  914. Note:    once a task has been stopped, additional "STOP"s are ignored
  915. BUG:    in DV 2.00, this function is ignored unless the indicated task is the
  916.       current task
  917. SeeAlso: AX=101Eh,AX=102Bh,AH=12h"VMiX",INT 21/AH=81h
  918. ----------15101E-----------------------------
  919. INT 15 - TopView - "START" - START TASK
  920.     AX = 101Eh
  921.     ES = segment of object handle for task to be started
  922.          (== handle of main window for that task)
  923. Return: indicated task is started up again
  924. Note:    once a task has been started, additional "START"s are ignored
  925. SeeAlso: AX=101Dh,AX=102Bh,INT 21/AH=82h
  926. ----------15101F-----------------------------
  927. INT 15 - TopView - "DISPEROR" - POP-UP ERROR WINDOW
  928.     AX = 101Fh
  929.     BX = bit fields
  930.          bits 0-12: number of characters to display
  931.          bits 13,14: which mouse button may be pressed to remove window
  932.              00 = either
  933.              01 = left
  934.              10 = right
  935.              11 = either
  936.          bit 15: beep if 1
  937.     ES:DI -> text of message
  938.     CH = width of error window (0 = default)
  939.     CL = height of error window (0 = default)
  940.     DX = segment of object handle
  941. Return: BX = status: 1 = left button, 2 = right, 27 = ESC pressed
  942. Note:    window remains on-screen until ESC or indicated mouse button is pressed
  943. ----------151020-----------------------------
  944. INT 15 - TopView - UNIMPLEMENTED IN DV v2.00+
  945.     AX = 1020h
  946. Return: pops up "Programming error" window in DV v2.00+
  947. ----------151021-----------------------------
  948. INT 15 - TopView - "PGMINT" - INTERRUPT ANOTHER TASK
  949.     AX = 1021h
  950.     BX = segment of object handle for task to interrupt (not self)
  951.     DX:CX -> FAR routine to jump to next time task is run
  952. Return: nothing
  953. Notes:    the FAR routine is entered with the current ES, DS, SI, DI, and BP
  954.       values, using the task's internal stack (see AX=101Ah); only SS:SP
  955.       needs to be preserved
  956.     multiple PGMINTs to a single task are processed last-in first-out
  957.     if the other task is in a DOS or DV API call, the interruption will
  958.       occur on return from that call
  959. ----------151022BX0000-----------------------
  960. INT 15 - TopView - "GETVER" - GET VERSION
  961.     AX = 1022h
  962.     BX = 0000h
  963. Return: BX nonzero, TopView or compatible loaded
  964.     (BL = major version, BH = minor version)
  965. Notes:    TaskView returns BX = 0001h, DESQview v2.00+ returns BX = 0A01h
  966. ----------151023-----------------------------
  967. INT 15 - TopView - "POSWIN" - POSITION WINDOW
  968.     AX = 1023h
  969.     BX = segment of object handle for parent window within which to
  970.          position the window (0 = full screen)
  971.     ES = segment of object handle for window to be positioned
  972.     DL = bit flags
  973.          bits 0,1: horizontal position
  974.         00 = current
  975.         01 = center
  976.         10 = left
  977.         11 = right
  978.          bits 2,3: vertical position
  979.         00 = current
  980.         01 = center
  981.         10 = top
  982.         11 = bottom
  983.          bit 4: don't redraw screen if set
  984.          bits 5-7 not used
  985.     CH = number of columns to offset from position specified by DL
  986.     CL = number of rows to offset from position specified by DL
  987. Return: nothing
  988. ----------151024-----------------------------
  989. INT 15 - TopView - "GETBUF" - GET VIRTUAL SCREEN INFO
  990.     AX = 1024h
  991.     BX = segment of object handle for window
  992.           (0 = use default)
  993. Return: ES:DI -> virtual screen
  994.     CX = size of virtual screen in bytes
  995.     DL = 00h text screen
  996.          01h graphics screen
  997. SeeAlso: INT 10/AH=FEh,INT 21/AH=2Bh/CX=4445h
  998. ----------151025-----------------------------
  999. INT 15 - TopView - "USTACK" - SWITCH BACK TO USER'S STACK
  1000.     AX = 1025h
  1001. Return: stack switched back
  1002. Notes:    call only after having switched to internal stack with AX=101Ah
  1003.     while TopView requires many API calls to be executed while on the
  1004.       task's private stack, DESQview allows those calls to be executed
  1005.       regardless of the current stack
  1006. SeeAlso: AX=101Ah
  1007. ----------1510-------------------------------
  1008. INT 15 - DESQview (TopView???) - UNIMPLEMENTED IN DV 2.x
  1009.     AH = 10h
  1010.     AL = 26h thru 2Ah
  1011. Return: pops up "Programming error" window in DV 2.x
  1012. ----------15102B-----------------------------
  1013. INT 15 - DESQview v2.00+ (TopView???) - "POSTTASK" - AWAKEN TASK
  1014.     AX = 102Bh
  1015.     BX = segment of object handle for task
  1016. Return: nothing
  1017. Note:    forces a task which is waiting on its objectq to continue by placing
  1018.       the handle for the task on the objectq
  1019. SeeAlso: AX=101Dh,AX=101Eh,INT 21/AH=82h
  1020. ----------15102C-----------------------------
  1021. INT 15 - DESQview v2.00+ - "NEWPROC" - START NEW APPLICATION IN NEW PROCESS
  1022.     AX = 102Ch
  1023.     ES:DI -> contents of .PIF/.DVP file (see below)
  1024.     BX = size of .PIF/.DVP info
  1025. Return: BX = segment of object handle for new task
  1026.          0000h on error
  1027. SeeAlso: AX=DE24h,INT 21/AH=4Bh
  1028.  
  1029. Format of .PIF/.DVP file:
  1030. Offset    Size    Description
  1031.  00h    BYTE    reserved (0)
  1032.  01h    BYTE    checksum of bytes 02h through 170h
  1033.  02h 30 BYTEs    blank-padded program title
  1034.  20h    WORD    maximum memory to allocate to partition in K
  1035.  22h    WORD    minimum memory required in K
  1036.  24h 64 BYTEs    ASCIZ program pathname
  1037.  64h    BYTE    default drive letter ('A',...)
  1038.  65h 64 BYTEs    ASCIZ default directory name
  1039.  A5h 64 BYTEs    ASCIZ program parameters
  1040.  E5h    BYTE    initial screen mode (0-7) (see also offset 189h)
  1041.  E6h    BYTE    number of text pages used
  1042.  E7h    BYTE    number of first interrupt to save
  1043.  E8h    BYTE    number of last interrupt to save
  1044.  E9h    BYTE    rows in virtual screen buffer
  1045.  EAh    BYTE    columns in virtual screen buffer
  1046.  EBh    BYTE    initial window position, row
  1047.  ECh    BYTE    initial window position, column
  1048.  EDh    WORD    system memory in K
  1049.  EFh 64 BYTEs    ASCIZ shared program name
  1050. 12Fh 64 BYTEs    ASCIZ shared program data file
  1051. 16Fh    BYTE    flags1
  1052.         bit 7: writes text directly to screen
  1053.         bit 6: runs in foreground only
  1054.         bit 5: uses math coprocessor
  1055.         bit 4: accesses system keyboard buffer directly
  1056.         bits 3-1: reserved (0)
  1057.         bit 0: swappable
  1058. 170h    BYTE    flags2
  1059.         bit 6: uses command-line parameters in field at A5h
  1060.         bit 5: swaps interrupt vectors
  1061. ---information unique to .DVP files---
  1062. 171h  2 BYTEs    keys to use on open menu
  1063. 173h    WORD    size of script buffer in bytes
  1064. 175h    WORD    automatically give up CPU after this many tests for keyboard
  1065.         input in one clock tick (default 0 = never)
  1066. 177h    BYTE    nonzero = "uses own colors"
  1067. 178h    BYTE    nonzero if application swappable
  1068. 179h  3 BYTEs    reserved (0) according to Quarterdeck documentation
  1069.         in actual .DVP files, frequently 01h
  1070. 17Ch    BYTE    nonzero to automatically close on exit (see also offset 18Bh)
  1071. 17Dh    BYTE    nonzero if copy-protect floppy is required
  1072. ---information unique to DESQview 2.0+---
  1073. 17Eh    BYTE    .DVP version number
  1074.         00h DESQview v1.2+
  1075.         01h DESQview v2.0+
  1076.         02h DESQview v2.2+
  1077. 17Fh    BYTE    reserved (0)
  1078. 180h    BYTE    initial number of rows in physical window
  1079. 181h    BYTE    initial number of columns in physical window
  1080. 182h    WORD    maximum expanded memory to allow, in K
  1081. 184h    BYTE    flags3
  1082.         bit 7: automatically assign window position
  1083.         bit 5: maximum memory value has been specified
  1084.         bit 4: disallow "Close" command
  1085.         bit 3: foreground-only when doing graphics
  1086.         bit 2: don't virtualize
  1087.         bit 1: ??? set by DV 2.31 when "Runs in Background" = "D"
  1088. 185h    BYTE    keyboard conflict level (0-4 for DV<2.26, 00h-0Fh for DV2.26+)
  1089. 186h    BYTE    number of graphics pages used
  1090. 187h    WORD    extra system memory size
  1091. 189h    BYTE    initial screen mode (FFh = default) (overrides offset E5h)
  1092. ---information unique to DESQview 2.2+---
  1093. 18Ah    BYTE    serial port usage
  1094.         FFh uses all serial ports
  1095.         00h no serial ports
  1096.         01h only COM1
  1097.         02h only COM2
  1098. 18Bh    BYTE    flags4
  1099.         bit 7: automatically close application on exit if .COM or .EXE
  1100.             specified (see also offset 17Ch)
  1101.         bit 6: swappable if not using serial ports
  1102.         bit 5: start program with window hidden (v2.26+)
  1103.         bit 4: start program in background (v2.26+)
  1104.         bit 3: virtualize text
  1105.         bit 2: virtualize graphics
  1106.         bit 1: share CPU when foreground
  1107.         bit 0: share EGA when foreground and zoomed
  1108. 18Ch    BYTE    protection level for 386 machines
  1109. 18Dh 19 BYTEs    reserved (0) for regular DESQview
  1110. ---information unique to DESQview/X 1.0---
  1111. 18Dh    BYTE    X flags
  1112.         bit 0: (XNEWPROC) use DOS client layer (DOS-to-X)
  1113.                (NEWPROC) inherit DOS client layer usage
  1114.         bit 1: don't display DOS window
  1115.         bit 2: don't display wait message when opening window
  1116.         bits 3-7: unused (0)
  1117. 18Eh    BYTE    X keyboard behavior (0-3)
  1118. 18Fh    BYTE    font scaling
  1119.         00h fixed fonts
  1120.         01h scalable fonts
  1121. 190h 10 BYTEs    reserved (0)
  1122. 19Ah    WORD    length of data follownig XDVP signature
  1123. 19Ch  4 BYTEs    signature "XDVP"
  1124. 1A0h  N BYTEs    list of variable length records (see below)
  1125.  
  1126. Format of variable length record:
  1127. Offset    Size    Description
  1128.  00h    WORD    length of following record, 0000h if end of record list
  1129.  02h    BYTE    record type
  1130.         01h script filename, up to 64 characters
  1131.         02h command-line parameters (allows >64 characters on cmdline)
  1132.         03h environment inheritance
  1133.         04h environment string
  1134.         05h starting window position
  1135. ---types 01h,02h,04h---
  1136.  03h  N BYTEs    ASCII data
  1137. ---type 03h---
  1138.  03h    BYTE    inheritance
  1139.         00h do not inherit
  1140.         01h inherit environment
  1141. ---type 05h---
  1142.  03h  N BYTEs    ASCII copy of fields as typed into DVPMAN, separated by commas:
  1143.         starting row, starting column, starting height, starting width
  1144. Note:    if there are multiple occurrences of record types 01h, 02h, or 03h,
  1145.       only the last instance of each type is used; multiple occurrences of
  1146.       type 04h are concatenated
  1147. ----------15102D-----------------------------
  1148. INT 15 - DESQview v2.00+ - "KMOUSE" - KEYBOARD MOUSE CONTROL
  1149.     AX = 102Dh
  1150.     BL = subfunction
  1151.          00h determine whether using keyboard mouse
  1152.         Return: BL = 00h using real mouse
  1153.                  01h using keyboard mouse
  1154.          01h turn keyboard mouse on
  1155.          02h turn keyboard mouse off
  1156. ----------15102E-----------------------------
  1157. INT 15 - DESQview v2.40+ - ALLOCATE SYSTEM MEMORY
  1158.     AX = 102Eh
  1159.     BX = number of bytes
  1160. Return: AX = status
  1161.         0000h successful
  1162.         ES:DI -> allocated system memory
  1163.         0001h failed
  1164.         ES:DI = 0000h:0000h
  1165. Note:    under DV 2.42, this call is identical to AX=1001h
  1166. SeeAlso: AX=1001h,AX=1002h,AX=DE0Ch
  1167.  
  1168. Format of system memory block header (one paragraph before memory block):
  1169. Offset    Size    Description
  1170.  00h    WORD    segment of next header or 0000h
  1171.  02h    WORD    segment of previous header or 0000h
  1172.  04h    WORD    size of block in paragraphs, including header
  1173.  06h    BYTE    availability flag (00h in use, 01h free)
  1174. ----------1511-------------------------------
  1175. INT 15 - TopView commands
  1176.     AH = 11h
  1177.     AL = various (except 17h)
  1178. Note:    in DESQview 2.x, these function calls are identical to AH=DEh, so
  1179.       see those below
  1180. SeeAlso: AH=DEh
  1181. ----------1511-------------------------------
  1182. INT 15 - VMiX - "sys_system" - EXECUTE SHELL SYSTEM COMMANDS
  1183.     AH = 11h
  1184.     STACK:    DWORD    pointer to ASCIZ string containing a VMiX shell
  1185.             request (max len = 127)
  1186. Return: AX = status (SYS_OK or SYS_ERROR)
  1187. SeeAlso: AH=0Ch"VMiX"
  1188. ----------1511-------------------------------
  1189. INT 15 - MultiDOS Plus - TURN OFF AltZ TOGGLE
  1190.     AH = 11h
  1191. Note:    disables the Alt-Z MultiDOS command/program-selection hotkey
  1192. SeeAlso: AH=12h"MultiDOS"
  1193. ----------151117BX0000-----------------------
  1194. INT 15 - DESQview v2.20+ - "ASSERTMAP" - GET/SET MAPPING CONTEXT
  1195.     AX = 1117h
  1196.     BX = 0000h    get current mapping context without setting
  1197.          nonzero    set new mapping context
  1198. Return: BX = mapping context in effect before call
  1199.     interrupts enabled
  1200. Notes:    this function differs from AX = DE17h for DESQview v2.20 through 2.25
  1201.     mapping contexts determine conventional-memory addressability; setting
  1202.       a mapping context ensures that the associated program and data areas
  1203.       are in memory for access.  Usable by drivers, TSRs and shared
  1204.       programs.
  1205.     caller need not be running under DESQview, but must ensure that the
  1206.       stack in use will not be mapped out by the call
  1207. SeeAlso: AX=DE17h,INT 2F/AX=1685h
  1208. ----------1511DE-----------------------------
  1209. INT 15 - DESQview - QEXT.SYS - INSTALLATION CHECK
  1210.     AX = 11DEh
  1211. Return: CF clear if installed
  1212.         AX = segment at which QEXT.SYS is located
  1213. Note:    a private entry point may be found by searching the beginning of the
  1214.       returned segment for the signature string
  1215.       "QUARTERDECK EXTENDED MEMORY MANAGER 286"; the word immediately
  1216.       prior to the signature contains the QEXT version number in BCD,
  1217.       and the word prior to that contains the offset within the QEXT
  1218.       code segment of the private entry point
  1219. SeeAlso: INT 67/AH=3Fh
  1220.  
  1221. Call private entry point with:
  1222.     AH = 00h ???
  1223.     AH = nonzero ???
  1224. ----------1512-------------------------------
  1225. INT 15 - VMiX - "sys_sleep" - PUT PROCESS TO SLEEP
  1226.     AH = 12h
  1227.     STACK:    WORD    process ID
  1228. Return: AX = status (SYS_OK or SYS_ERROR)
  1229. SeeAlso: AH=03h"MultiDOS",AX=101Dh,AH=13h"VMiX"
  1230. ----------1512-------------------------------
  1231. INT 15 - MultiDOS Plus - TURN ON AltZ TOGGLE
  1232.     AH = 12h
  1233. Note:    enables the Alt-Z MultiDOS command/program-selection hotkey
  1234. SeeAlso: AH=11h"MultiDOS"
  1235. ----------1512--BH00-------------------------
  1236. INT 15 - TopView - SEND MESSAGE - "HANDLE" - RETURN OBJECT HANDLE
  1237.     AH = 12h
  1238.     BH = 00h
  1239.     BL = which handle to return
  1240.         00h handle in DWORD on top of stack
  1241.         01h current task's window handle
  1242.         02h given task's mailbox handle (task's handle on stack)
  1243.         03h current task's mailbox handle
  1244.         04h given task's keyboard handle (task's handle on stack)
  1245.         05h current task's keyboard object handle
  1246.         06h given task's OBJECTQ handle (task's handle on stack)
  1247.         07h current task's OBJECTQ handle
  1248.         08h      \
  1249.           thru > return 0000:0000 under DV < 2.26
  1250.         10h      /
  1251.         0Ch (2.26+) task owning object with handle in DWORD on top of stack
  1252.         0Dh (2.26+) task handle of owner (parent) of current task
  1253. Return: DWORD on top of stack is object handle
  1254. Note:    BL=0Ch,0Dh returns 00000000h if the object is not open (keyboard,
  1255.       mailbox, panel, pointer, and timer objects) or is an orphan (task,
  1256.       window)
  1257. SeeAlso: AH=12h/BH=02h,AH=12h/BH=80h
  1258. ----------1512--BH01-------------------------
  1259. INT 15 - TopView - SEND MESSAGE - "NEW" - CREATE NEW OBJECT
  1260.     AH = 12h
  1261.     BH = 01h
  1262.     BL = object type to create
  1263.         00h (DV 2.0x only) handle is DWORD on top of stack
  1264.         01h (DV 2.0x only) use task's window handle
  1265.         02h (DV 2.0x only) given task's mailbox (task's handle on stack)
  1266.         03h (DV 2.0x only) current task's mailbox
  1267.         04h (DV 2.0x only) given task's keyboard (task's handle on stack)
  1268.         05h (DV 2.0x only) current task's keyboard object
  1269.         08h WINDOW class
  1270.         09h MAILBOX class
  1271.         0Ah KEYBOARD class
  1272.         0Bh TIMER object (counts down 32-bit time in 10ms increments)
  1273.         0Fh POINTER object
  1274.         10h PANEL object
  1275.     STACK: (if window object or WINDOW class)
  1276.            DWORD address to jump to (no new task if high word == 0)
  1277.            DWORD (reserved) 0 = non-task window, FFFFh = task window
  1278.            DWORD bytes for task's private stack (FFFFh == default of 0100h)
  1279.            DWORD bytes system memory for input buffer for READ/READN
  1280.             (0 == none, -1 == default--same as logical window size)
  1281.            DWORD window size, columns
  1282.            DWORD window size, rows
  1283.            DWORD length of window title
  1284.            DWORD address of window title
  1285. Return: DWORD on top of stack is new object handle
  1286. Notes:    if a new task is created, it is started with
  1287.       AX = BX = SI = DI = BP = 0
  1288.       DX:CX = handle of parent task
  1289.       DS = ES = SS = segment of private stack (and new task's handle)
  1290.     new windows are orphans, inherit the colors/hidden status of the
  1291.       creating task's window, and are placed in the upper left hand corner
  1292.       of the screen but not automatically redrawn
  1293.     new keyboards are closed, and have all object bits cleared except for
  1294.       the hardware cursor bit
  1295. SeeAlso: AH=12h/BH=02h,AH=12h/BH=81h
  1296. ----------1512--BH02-------------------------
  1297. INT 15 - TopView - SEND MESSAGE - "FREE" - FREE AN OBJECT
  1298.     AH = 12h
  1299.     BH = 02h
  1300.     BL = object
  1301.         00h handle in DWORD on top of stack
  1302.         window: close window and free
  1303.         timer: free timer
  1304.         panel: free panel object
  1305.         pointer: free pointer
  1306.         01h task's window handle - kills task, never returns
  1307.         02h given task's mailbox (task's handle on top of stack)
  1308.         03h current task's mailbox
  1309.         04h given task's keyboard (task's handle on top of stack)
  1310.         05h current task's keyboard object
  1311. Notes:    when a window is freed, its keyboard and pointer objects are freed;
  1312.       task windows also free any mailbox, objectq, and panel objects held
  1313.       by the task and any child tasks
  1314.     if the keyboard being freed is the default keyboard for a task, this
  1315.       call is equivalent to CLOSE
  1316.     panel and pointer objects are automatically closed if open
  1317. SeeAlso: AH=12h/BH=01h,AH=12h/BH=0Dh,AH=12h/BH=82h
  1318. ----------1512--BH03-------------------------
  1319. INT 15 - TopView - SEND MESSAGE - "ADDR" - GET HANDLE OF MESSAGE SENDER
  1320.     AH = 12h
  1321.     BH = 03h
  1322.     BL = object
  1323.         00h mailbox handle in DWORD on top of stack
  1324.         02h sender of last msg read from mailbox (task's handle on stack)
  1325.         03h sender of last msg read from current task's mailbox
  1326. Return: DWORD on stack is task handle of message sender
  1327. SeeAlso: AH=12h/BH=00h,AH=12h/BH=83h
  1328. ----------1512--BH03-------------------------
  1329. INT 15 - DESQview v2.26+ - "CONNECT" - CONNECT TWO WINDOWS
  1330.     AH = 12h
  1331.     BH = 03h
  1332.     BL = window to be connected
  1333.         00h handle of window to be attached in DWORD on top of stack
  1334.         01h attach current task's main window
  1335.     STACK: DWORD handle of window to attach to or 00000000h to detach
  1336. Return: STACK popped
  1337. Notes:    when two windows are connected, both will move if the user moves either
  1338.     multiple windows may be attached to a single window, but each window
  1339.       may only be attached to one window at a time
  1340. SeeAlso: AH=12h/BH=83h
  1341. ----------1512--BX0300-----------------------
  1342. INT 15 - TopView - SEND MESSAGE - "DIR" - GET PANEL FILE DIRECTORY
  1343.     AH = 12h
  1344.     BX = 0300h
  1345.     STACK: DWORD handle of panel object
  1346. Return: STACK: DWORD length of directory (always multiple of 14 bytes)
  1347.            DWORD address of directory
  1348. Note:    a null string is returned if the object is not open
  1349. SeeAlso: AH=12h/BX=0400h"APPLY",AH=12h/BH=83h
  1350.  
  1351. Format of panel file:
  1352. Offset    Size    Description
  1353.  00h  2 BYTEs    C0h C3h
  1354.  02h    BYTE    number of panels in file
  1355.  03h    for each panel in file:
  1356.         8 BYTEs  blank-padded panel name
  1357.           DWORD  panel offset in file
  1358.           WORD   panel length
  1359.     data for panels (each consists of one or more window/query/manager
  1360.     streams)
  1361.         first byte of each panel must be 1Bh, fifth byte must be E5h
  1362. ----------1512--BH04-------------------------
  1363. INT 15 - TopView - SEND MESSAGE - "READ" - READ NEXT LOGICAL LINE OF WINDOW
  1364.     AH = 12h
  1365.     BH = 04h
  1366.     BL = window to read from
  1367.         00h handle is DWORD on top of stack
  1368.         01h use calling task's default window
  1369.         0Ch (DV 2.26+) default window of task owning handle on top of stack
  1370.         0Dh (DV 2.26+) default window of parent task of current task
  1371. Return: STACK:    DWORD number of bytes read
  1372.         DWORD address of buffer
  1373. Notes:    reading starts at the current logical cursor position; the cursor is
  1374.       updated to point at the character following the last one read
  1375.     any translucent blanks (FFh) which are visible on screen are changed
  1376.       to the character which is seen through them
  1377.     the string produced by the read is placed in an input buffer which may
  1378.       be reused by the next READ or READN of a window
  1379.     window stream opcodes D8h and D9h determine whether the read returns
  1380.       characters or attributes
  1381. SeeAlso: AH=12h/BH=05h"WINDOW",AH=12h/BH=12h,AH=12h/BH=84h
  1382. ----------1512--BH04-------------------------
  1383. INT 15 - TopView - SEND MESSAGE - "READ" - GET NEXT RECORD FROM OBJECT
  1384.     AH = 12h
  1385.     BH = 04h
  1386.     BL = object
  1387.         00h handle is DWORD on top of stack
  1388.         mailbox: wait for and get next message
  1389.         keyboard: wait for and get pointer to next input buffer
  1390.         pointer: wait for and get next message
  1391.         02h get next message from mailbox (task's handle on top of stack)
  1392.         03h get next message from current task's mailbox
  1393.         04h get the next input from keyboard (handle on top of stack)
  1394.         05h get the next input from task's default keyboard
  1395.         06h wait for input from any object in OBJECTQ (handle on stack)
  1396.         07h wait for input from any object in task's default OBJECTQ
  1397. Return: STACK: (if objectq) DWORD handle of object with input
  1398.            (otherwise)  DWORD number of bytes
  1399.                 DWORD address
  1400. Notes:    for a keyboard in keystroke mode, the input buffer is a single byte
  1401.       containing the character code as returned by the BIOS; the BIOS scan
  1402.       code is available via the STATUS call if the character is zero
  1403.     for a keyboard in field mode, the input buffer format is determined
  1404.       by the field table header for the window the keyboard is attached to
  1405.     keyboard input buffers and mailbox message buffers may be invalidated
  1406.       by the next READ, ERASE, CLOSE, or FREE message to the same object
  1407. SeeAlso: AH=12h/BH=05h"OBJECT",AH=12h/BH=84h
  1408.  
  1409. Format of pointer message:
  1410. Offset    Size    Description
  1411.  00h    WORD    row
  1412.  02h    WORD    column
  1413.  04h    BYTE    status
  1414.         bit 7: set when press/release mode active and button pressed
  1415.         bit 6: set when press/release mode active and button released
  1416.         bits 7-2: number of clicks-1 if multiple-click mode active
  1417.         bits 1,0: button pressed (00=none,01=button1,10=button2)
  1418.  05h    BYTE    field number or zero (APILEVEL >= 2.00 only)
  1419. ----------1512--BX0400-----------------------
  1420. INT 15 - TopView - SEND MESSAGE - "READ" - WAIT FOR TIMER TO EXPIRE
  1421.     AH = 12h
  1422.     BX = 0400h
  1423.     STACK: DWORD timer's handle
  1424. Return: after timer expires
  1425.     STACK: DWORD time in 1/100 sec after midnight when timer expired
  1426. SeeAlso: AH=12h/BH=0Ah,AH=12h/BH=84h
  1427. ----------1512--BX0400-----------------------
  1428. INT 15 - TopView - SEND MESSAGE - "APPLY" - WRITE PANEL TO WINDOW
  1429.     AH = 12h
  1430.     BX = 0400h
  1431.     STACK: DWORD handle of panel object
  1432.            DWORD window's handle (or 0 for current task's window)
  1433.            DWORD length of panel name
  1434.            DWORD pointer to panel name
  1435. Return: STACK: DWORD handle of window which was used
  1436.            DWORD handle of keyboard or 0
  1437. Notes:    status of APPLY may be checked with STATUS message
  1438.     panel MUST have the following format
  1439.       first byte must be 1Bh (i.e. must start with a stream)
  1440.       first opcode in stream must be E5h
  1441.         single byte arg of opcode is interpreted thus:
  1442.           bits 7,6    11 means create new window
  1443.             10 means create new field table for existing window
  1444.             01 means use existing window and field table
  1445.           bit 5 if set, panel contains a field table 
  1446.             (creates a new keyboard and puts it in field mode)
  1447.           bit 4 if set, panel contains input fields
  1448.           bit 3 if set, panel contains select fields but no input fields
  1449.     if the panel contains input or select fields, a keyboard handle is
  1450.       returned; either the window's current open keyboard or a
  1451.       newly-created keyboard object.  The caller should read that keyboard
  1452.       to obtain input from the panel.
  1453. SeeAlso: AH=12h/BH=84h
  1454. ----------1512--BH05------------------------
  1455. INT 15 - TopView - SEND MESSAGE - "WRITE" - WRITE TO OBJECT
  1456.     AH = 12h
  1457.     BH = 05h
  1458.     BL = object
  1459.         00h handle is DWORD on top of stack
  1460.         timer: start timer to end at a specified time
  1461.         keyboard: add input buffer to queue
  1462.         pointer: move pointer icon to specified position
  1463.         02h send message by value/status=0 to mbox (task's handle on stack)
  1464.         03h send message by value/status=0 to current task's mailbox
  1465.         04h add input buffer to KEYBOARD queue (handle on top of stack)
  1466.         05h add input buffer to task's default KEYBOARD queue
  1467.         06h add an object to OBJECTQ (handle on top of stack)
  1468.         07h add an object to task's default OBJECTQ
  1469.     STACK: (if mailbox)  DWORD length
  1470.                  DWORD address
  1471.            (if keyboard) DWORD status (scan code in keystroke mode)
  1472.                  DWORD length (should be 1 in keystroke mode)
  1473.                  DWORD address
  1474.            (if objectq)  DWORD handle of object to add
  1475.            (if timer)    DWORD 1/100ths seconds since midnight (actually
  1476.                    only accurate to 1/18 sec)
  1477.            (if pointer)  DWORD column relative to origin of window
  1478.                  DWORD row relative to origin of window
  1479. Notes:    under DV 2.2+, failed mailbox writes may return CF set (see AX=DE15h)
  1480.     the data and status written to a keyboard object must match the format
  1481.       returned by the keyboard object in the current mode
  1482.     the pointer position is scaled according to the current scaling factors
  1483. SeeAlso: AH=12h/BH=04h,AH=12h/BH=85h
  1484. ----------1512--BH05-------------------------
  1485. INT 15 - TopView - SEND MESSAGE - "WRITE" - WRITE STRING TO WINDOW
  1486.     AH = 12h
  1487.     BH = 05h
  1488.     BL = window to write to
  1489.         00h DWORD on top of stack is window handle
  1490.         01h write string to task's default window
  1491.         0Ch (DV 2.26+) default window of task owning handle on top of stack
  1492.         0Dh (DV 2.26+) default window of parent of current task
  1493.     STACK: DWORD object handle if handle passed on stack
  1494.            DWORD total length of string (high word == 0)
  1495.            DWORD address of string to display
  1496. Return: indicated actions performed
  1497.     a. non-control characters are displayed (opcodes DEh and DFh control
  1498.        whether the attributes are left or changed to the current attrib)
  1499.     b. CR/LF/BS/Tab cause the usual cursor movement
  1500.     c. ESC starts a data structure with additional commands if following
  1501.        byte is less than 20h; otherwise, it is written to the window
  1502.     STACK:    DWORD handle of new window if window stream opcode E6h
  1503.         else nothing
  1504. SeeAlso: AH=12h/BH=04h,AH=12h/BH=85h
  1505.  
  1506. Data Structure:
  1507.     MAGIC  DB  1Bh
  1508.     MODE   DB  ?   ; 00h, 01h, 10h, 14h-1Fh legal
  1509.     LENGTH DW  ?   ; length of remainder in bytes
  1510.     var-length fields follow, each an OPCODE followed by
  1511.          zero or more args
  1512.  
  1513. MODE 00h (set or display values) "WINDOW STREAM"
  1514.     Opcodes:args
  1515.     00h  display 20h blanks with the default attribute
  1516.     01h-1Fh display OPCODE blanks with the default attribute
  1517.     20h  display char with default attribute 20h times
  1518.          BYTE char to repeat
  1519.     21h-3Fh display char with default attribute OPCODE-20h times
  1520.          BYTE char to repeat
  1521.     40h  display 20h blanks with specified attribute
  1522.          BYTE attribute of blanks
  1523.     41h-5Fh display OPCODE-40h blanks with specified attribute
  1524.          BYTE attribute of blanks
  1525.     60h  display next 20h characters
  1526.          20h BYTEs characters to display
  1527.     61h-7Fh display next OPCODE-60h characters
  1528.          N BYTEs characters to display
  1529.     80h-87h     display N blanks with default attribute
  1530.          BYTE low 8 bits of 11-bit count (high 3 in low 3 bits of OPCODE)
  1531.               [000h means 800h]
  1532.     88h-8Fh display N copies of the character
  1533.          BYTE low 8 bits of 11-bit count (high 3 in low 3 bits of OPCODE)
  1534.               [000h means 800h]
  1535.          BYTE character to repeat
  1536.     90h-97h     display N blanks with specified attribute
  1537.          BYTE low 8 bits of 11-bit length (high 3 in low 3 bits of OPCODE)
  1538.               [000h means 800h]
  1539.          BYTE attribute
  1540.     98h-9FH     display string at logical cursor pos
  1541.          BYTE low 8 bits of 11-bit length (high 3 in low 3 bits of OPCODE)
  1542.               [000h means 800h]
  1543.          N BYTEs string to display
  1544.     A0h  set logical cursor row
  1545.          BYTE row number (0 is top)
  1546.     A1h  set logical cursor column
  1547.          BYTE column number (0 is leftmost)
  1548.     A2h  set top edge of scrolling region
  1549.          BYTE row
  1550.     A3h  set left edge of scrolling region
  1551.          BYTE column
  1552.     A4h  set row of physical window position
  1553.          BYTE line
  1554.     A5h  set column of physical window position
  1555.          BYTE column
  1556.     A6h  set height of physical window
  1557.          BYTE #rows
  1558.     A7h  set width of physical window
  1559.          BYTE #columns
  1560.     A8h  set viewport row
  1561.          BYTE row
  1562.     A9h  set viewport column
  1563.          BYTE column
  1564.     AAh  set virtual screen height [contents of window unpredictable after]
  1565.          BYTE rows
  1566.     ABh  set virtual screen width [contents of window unpredictable after]
  1567.          BYTE columns
  1568.     ACh-AEh     unused
  1569.     AFh  set compatible/preferred video modes
  1570.          BYTE compatibility/preference mask
  1571.         bit 7    compatible with monochrome
  1572.         bit 6    compatible with color text, EGA/VGA graphics
  1573.         bit 5    compatible with medium-resolution CGA graphics
  1574.         bit 4    compatible with high-resolution CGA graphics
  1575.         bit 3    prefer monochrome
  1576.         bit 2    prefer color text, EGA/VGA graphics
  1577.         bit 1    prefer medium-resolution CGA graphics
  1578.         bit 0    prefer high-resolution CGA graphics
  1579.     B0h  move logical cursor down
  1580.          BYTE #rows (signed, negative values move up)
  1581.             [if #rows=0 and hardware cursor owner, update hw crsr]
  1582.     B1h  move logical cursor right
  1583.          BYTE #cols (signed, negative values move left)
  1584.             [if #cols=0 and hardware cursor owner, update hw crsr]
  1585.     B2h  shift top edge of scrolling region
  1586.          BYTE #rows (signed)
  1587.     B3h  shift left edge of scrolling region
  1588.          BYTE #cols (signed)
  1589.     B4h  shift physical window down
  1590.          BYTE #lines (signed)
  1591.     B5h  shift physical window right
  1592.          BYTE #columns (signed)
  1593.     B6h  expand physical window vertically
  1594.          BYTE #lines (signed)
  1595.     B7h  expand physical window horizontally
  1596.          BYTE #columns (signed)
  1597.     B8h  adjust viewport row
  1598.          BYTE #rows (signed)
  1599.     B9h  adjust viewport column
  1600.          BYTE #columns (signed)
  1601.     BAh  adjust virtual screen height [contents of window unpredict after]
  1602.          BYTE #rows to increase (signed)
  1603.     BBh  adjust virtual screen width [contents of window unpredictbl after]
  1604.          BYTE #cols to increase (signed)
  1605.     BCh-BFh     reserved (currently unused)
  1606.     C0h  set logical cursor position
  1607.          BYTE row number (0 is top border)
  1608.          BYTE column number (0 is left border)
  1609.     C1h  set top left corner of scrolling region
  1610.          BYTE row
  1611.          BYTE column
  1612.     C2h  set physical window pos
  1613.          BYTE upper left row (no top border if 0)
  1614.          BYTE upper left column (no left border if 0)
  1615.     C3h  set current window size
  1616.          BYTE #rows
  1617.          BYTE #cols
  1618.     C4h  set upper left corner of viewport (portion of virtual screen
  1619.          displayed in window)
  1620.          BYTE row
  1621.          BYTE column
  1622.     C5h  set size of virtual screen [contents unpredictable afterwards]
  1623.          BYTE #rows
  1624.          BYTE #cols
  1625.     C6h  unused
  1626.     C7h  unused
  1627.     C8h  set logical cursor relative to current position
  1628.          BYTE number of rows to move down (signed)
  1629.          BYTE number of columns to move right (signed)
  1630.           [if #rows=#cols=0 and hardware cursor owner, update hw cursr]
  1631.     C9h  shift top left corner of scrolling region
  1632.          BYTE #rows (signed)
  1633.          BYTE #cols (signed)
  1634.     CAh  set window pos relative to current position
  1635.          BYTE number of rows to shift down (signed)
  1636.          BYTE number of columns to shift right (signed)
  1637.     CBh  set window size relative to current size
  1638.          BYTE number of rows to expand (signed)
  1639.          BYTE number of cols to expand (signed)
  1640.     CCh  shift viewport relative to current position
  1641.          BYTE rows to shift (signed)
  1642.          BYTE cols to shift (signed)
  1643.     CDh  resize virtual screen
  1644.          BYTE #rows to expand (signed)
  1645.          BYTE #cols to expand (signed)
  1646.     CEh  scroll text when using E8h-EBh/F8h-FBh opcodes (default)
  1647.     CFh  scroll attributes when using  E8h-EBh/F8h-FBh opcodes
  1648.     D0h  allow window frame to extend beyond screen
  1649.     D1h  always display a complete frame, even if window extends beyond 
  1650.          edge of screen
  1651.     D2h  allow DV to change logical colors on video mode switch (default)
  1652.     D3h  application changes logical attributes
  1653.     D4h  window is visible [must redraw to actually make visible]
  1654.     D5h  window is hidden [must redraw to actually remove]
  1655.     D6h  window has frame (default)
  1656.     D7h  window unframed [must redraw to actually remove frame]
  1657.     D8h  READ/READN will read characters from window (default)
  1658.     D9h  READ/READN will read attributes from window
  1659.     DAh  use logical attributes, which may be remapped
  1660.         attributes
  1661.            1 normal text
  1662.            2 highlighted normal text
  1663.            3 help text
  1664.            4 highlighted help text
  1665.            5 error message
  1666.            6 highlighted error message
  1667.            7 emphasized text
  1668.            8 marked text
  1669.            9-16 are reverse video versions of 1-8
  1670.     DBh  use physical attributes for characters
  1671.     DCh  enable special actions for control characters (default)
  1672.     DDh  disable special control char handling, all chars displayable by
  1673.          BIOS TTY call
  1674.     DEh  write both character and attribute (default)
  1675.     DFh  write character only, leave attribute untouched
  1676.     E0h  repeat following commands through E1h opcode
  1677.          BYTE number of times to repeat (00h means 256 times)
  1678.     E1h  end of commands to repeat, start repeating them
  1679.     E2h  set current output color
  1680.          BYTE color
  1681.     E3h  clear virtual screen from scroll origin to end using current color
  1682.     E4h  redraw window
  1683.     E5h  select menu style
  1684.          BYTE style (normally 18h)
  1685.         bits 5,4 = 01 use two-letter menu entries for remainder of
  1686.           this stream
  1687.     E5h  (panel file only)
  1688.          BYTE modifier
  1689.         bits 7,6 = 11 panel stream creates new window
  1690.              = 10 panel defines new field table for existing window
  1691.              = 01 panel stream uses existing window & field table
  1692.         bit 5 = 1 stream contains a field table (create kyboard object)
  1693.         bit 4 = 1 stream defines input fields (create keyboard object)
  1694.         bit 3 = 1 stream defines select fields but not input fields
  1695.         bit 2 = 1 stream defines exclusive input window (DV 2.2)
  1696.         bit 1 reserved
  1697.         bit 0 reserved
  1698.     E6h  create new window and perform rest of manipulations in new window
  1699.          BYTE number of rows
  1700.          BYTE number of columns
  1701.          Return: DWORD object handle of new window returned on stack at end
  1702.          Note: the window is created with a physical size of 0x0 at the
  1703.              same position as the window to which this stream was sent
  1704.     E7h  no operation
  1705.     E8h  scroll area up (top left corner defined by opcode C1h)
  1706.          BYTE height
  1707.          BYTE width
  1708.     E9h  scroll area down (top left corner defined by opcode C1h)
  1709.          BYTE height
  1710.          BYTE width
  1711.     EAh  scroll area left (top left corner defined by opcode C1h)
  1712.          BYTE height
  1713.          BYTE width
  1714.     EBh  scroll area right (top left corner defined by opcode C1h)
  1715.          BYTE height
  1716.          BYTE width
  1717.     ECh  set logical attributes for window contents
  1718.          BYTE video modes command applies to
  1719.         bit 7    monochrome
  1720.         bit 6    color text, EGA/VGA graphics
  1721.         bit 5    medium-resolution CGA graphics
  1722.         bit 4    high-resolution CGA graphics
  1723.          BYTE which attributes to set
  1724.         bit 7  if set, copy single following byte to indicated attribs
  1725.         bits 4-6  # of first attribute to change - 1
  1726.         bits 0-3  # of consecutive attributes to change
  1727.          N BYTEs new attributes
  1728.     EDh  set logical attributes for window frame
  1729.          BYTE video modes command applies to (see opcode ECh)
  1730.          BYTE which attributes to set
  1731.         bit 7  if set, copy single following byte to indicated attrs
  1732.         bits 4-6  # of first attribute to change - 1
  1733.         bits 0-3  # of consecutive attributes to change
  1734.          N BYTEs new attributes
  1735.           attributes
  1736.                1 = top left corner
  1737.                2 = top right corner
  1738.                3 = bottom left corner
  1739.                4 = bottom right corner
  1740.                5 = top edge
  1741.                6 = bottom edge
  1742.                7 = left edge
  1743.                8 = right edge
  1744.     EEh  set characters for window frame
  1745.          BYTE video modes command applies to (see opcode ECh)
  1746.          BYTE which characters to set
  1747.         bit 7  if set, copy single following byte to indicated chars
  1748.         bits 4-6  # of first char to change - 1
  1749.         bits 0-3  # of consecutive chars to change
  1750.          N BYTEs new chars (same relative position as attributes above)
  1751.     EFh  set window name
  1752.          BYTE length of name (should be in range 0 to logical screen width)
  1753.          N BYTEs name
  1754.     F0h  clear input field to blanks
  1755.          BYTE field number
  1756.     F1h  fill input field with character
  1757.          BYTE field number
  1758.          BYTE char
  1759.     F2h  set color of input field
  1760.          BYTE field number (1-N)
  1761.          BYTE attribute
  1762.     F3h  set initial contents of input field
  1763.          BYTE field number (1-N)
  1764.          N BYTEs enough chars to exactly fill field as defined by op FFh
  1765.     F4h  position cursor to start of specific input field
  1766.          BYTE field number (1-N)
  1767.     F5h  change field table entry
  1768.          BYTE field number
  1769.          7-8 BYTEs field table entry (see opcode FFh below)
  1770.     F6h  set field type
  1771.          BYTE field number
  1772.          BYTE type
  1773.             00h inactive
  1774.             40h output field
  1775.             80h input field
  1776.             C0h deselected field
  1777.             C2h selected field
  1778.     F7h  "broadcast write"    write data to fields with program output bit
  1779.         set in field table entry, in field number order
  1780.          N BYTEs (total length of all program output fields)
  1781.     F8h  scroll field up a line
  1782.          BYTE field number
  1783.     F9h  scroll field down a line
  1784.          BYTE field number
  1785.     FAh  scroll field left
  1786.          BYTE field number
  1787.     FBh  scroll field right
  1788.          BYTE field number
  1789.     FCh  set field table header
  1790.          BYTE number of fields (must be <= existing number of fields)
  1791.          BYTE screen behavior bits
  1792.         bit 7  reserved
  1793.         bit 6  set if menu items may be selected via keyboard
  1794.         bit 5  set if left mouse button in "status" mode (press
  1795.             anywhere in window immediately returns control to app)
  1796.         bit 4  set if right mouse button in "status" mode
  1797.         bit 3  if set, select fields return contents or blanks rather
  1798.             than 'Y' or 'N'
  1799.         bit 2  if set, modified bits reset on return to application
  1800.         bits 0,1 = 00 no data returned on read of keyboard
  1801.                01 data returned as array of chars containing
  1802.                 all fields packed together, with no field
  1803.                 numbers
  1804.                10 data returned as numbered variable-length
  1805.                 records for all fields
  1806.                11 data returned as numbered variable-length
  1807.                 records for the fields which were modified
  1808.          BYTE current input field (updated by DESQview)
  1809.          BYTE current select field (updated by DESQview)
  1810.          BYTE attribute for select fields when they are pointed at
  1811.          BYTE attribute for select fields which have been selected
  1812.     FDh  reset modified bit for all fields
  1813.     FEh  reset selected and modified bits for all fields
  1814.     FFh  set up input fields
  1815.          6 BYTEs table header (see opcode FCh above)
  1816.          the field table entries, one for each field
  1817.          BYTE start row       \
  1818.          BYTE start column  \ if menu selection and start is to
  1819.          BYTE end row        / right or below end, select from kbd only
  1820.          BYTE end column   /
  1821.          BYTE field type
  1822.             bits 7,6 = 00 inactive (non-entry) field
  1823.                    01 echos keystrokes input to make menu selection
  1824.                    10 fill-in field
  1825.                    11 select field
  1826.             bit 5  field can be filled by broadcast write (F7h opcode)
  1827.             bit 4  reserved
  1828.             bit 3  reserved
  1829.             bit 2  reserved
  1830.             bit 1  set if field selected
  1831.             bit 0  set if field modified
  1832.          BYTE modifier
  1833.               if type is fill-in, then bit flags to determine behavior
  1834.               bit 7     if set, automatically enter CR when field full
  1835.               bit 6     move to next field when current field is full
  1836.               bit 5     if set, enter text from right end (for numbers)
  1837.               bit 4     if set, force input to uppercase
  1838.               bit 3     if set, clear old contents on first keystroke
  1839.               bit 2     if set, input returned when cursor moves out
  1840.                  of modified field ("validate",API level 2.02+)
  1841.               bit 1     reserved
  1842.               bit 0     reserved
  1843.               if select field, first key to press to activate
  1844.               00h if have to point-&-click or is an extended-ASCII
  1845.                   keystroke (only if two-key menus enabled)
  1846.          BYTE (select field only) normal color of field
  1847.          BYTE second key for select field.  This byte is present iff
  1848.               two-letter menu entries selected with opcode E5h, and
  1849.               in that case is present regardless of field type
  1850.          Note: DESQview uses and updates the actual copy of the information
  1851.            which is contained in the stream.  Thus this info must remain
  1852.            intact until after the data entry is complete.
  1853.  
  1854. MODE 01h "QUERY STREAM" (valid only for those opcodes listed here)
  1855.     A0h return logical cursor row in next byte
  1856.     A1h return logical cursor column in next byte
  1857.     A2h return top row of scrolling region in next byte
  1858.     A3h return left column of scrolling region in next byte
  1859.     A4h return row of physical window origin in next byte
  1860.     A5h return column of physical window origin in next byte
  1861.     A6h return height of physcial window in next byte
  1862.     A7h return width of physical window in next byte
  1863.     A8h return row of viewport origin in next byte
  1864.     A9h return column of viewport origin in next byte
  1865.     AAh return height of virtual screen in next byte
  1866.     ABh return width of virtual screen in next byte
  1867.     AFh return current video mode in next byte
  1868.     C0h return current logical cursor position in next two bytes
  1869.     C1h return top left corner of scrolling region in next two bytes
  1870.     C2h return current window position in next two bytes
  1871.     C3h return current window size in next two bytes
  1872.     C4h return current viewport origin in next two bytes
  1873.     C5h return current virtual screen size in next two bytes
  1874.     D0h \ overwritten with D0h if frames may fall off screen edge
  1875.     D1h /               D1h if frames always displayed entirely
  1876.     D2h \ overwritten with D2h if DESQview controls color palette
  1877.     D3h /               D3h if application changes color palette
  1878.     D4h \ overwritten with D4h if window visible
  1879.     D5h /               D5h if window hidden
  1880.     D6h \ overwritten with D6h if window has frame
  1881.     D7h /               D7h if window unframed
  1882.     D8h \ overwritten with D8h if reading characters from window
  1883.     D9h /               D9h if reading attributes from window
  1884.     DAh \ overwritten with DAh if using logical attributes
  1885.     DBh /               DBh if using physical attributes
  1886.     DCh \ overwritten with DCh if TTY control char interpretation on
  1887.     DDh /               DDh if TTY control char interpretation off
  1888.     DEh \ overwritten with DEh if writing both characters and attributes
  1889.     DFh /               DFh if leaving attributes untouched
  1890.     E2h return current color in next byte
  1891.     ECh get logical attributes for window contents
  1892.         BYTE execute call if currently in specified video mode
  1893.         bit 7    monochrome
  1894.         bit 6    color text, EGA/VGA graphics
  1895.         bit 5    medium-resolution CGA graphics
  1896.         bit 4    high-resolution CGA graphics
  1897.         BYTE which attributes to get
  1898.         bit 7 unused???
  1899.         bits 4-6 first attribute to get - 1
  1900.         bits 0-3 # consecutive attributes
  1901.         N BYTEs buffer to hold attributes
  1902.     EDh get logical attributes for window frame
  1903.         BYTE execute call if currently in video mode (see opcode ECh)
  1904.         BYTE which attributes to get
  1905.         bit 7 unused???
  1906.         bits 4-6 first attribute to get - 1
  1907.         bits 0-3 # consecutive attributes
  1908.         N BYTEs buffer to hold attributes
  1909.     EEh get characters for window frame
  1910.         BYTE execute call if currently in video mode (see opcode ECh)
  1911.         BYTE which attributes to get
  1912.         bit 7 unused???
  1913.         bits 4-6 first char to get - 1
  1914.         bits 0-3 # consecutive chars
  1915.         N BYTEs buffer to hold chars
  1916.     EFh return first N characters of current window name
  1917.         BYTE    max length of returned name
  1918.         N BYTEs buffer to hold window name
  1919.     F3h return contents of specified field
  1920.         BYTE field number
  1921.         N BYTEs buffer to hold field contents (size exactly equal to field
  1922.             size)
  1923.     F5h get field table entry
  1924.         BYTE field number
  1925.         7-8 BYTEs buffer to hold field table entry
  1926.            Notes: DV < 2.26 always returns 7 bytes
  1927.               DV 2.26+ w/ APILEVEL < 2.26 returns 8 bytes iff field
  1928.             table is using 8-byte entries and eighth byte after
  1929.             F5h is E7h (NOP); otherwise, 7 bytes are returned
  1930.               DV 2.26+ w/ APILEVEL > 2.26 returns 7 or 8 bytes
  1931.             depending on the field table entry size
  1932.     F6h get type of a field
  1933.         BYTE field number
  1934.         BYTE type
  1935.     FCh get field table header
  1936.         6 BYTEs buffer to store header
  1937.  
  1938. MODE 10h "MANAGER STREAM" (valid only for opcodes listed here)
  1939.     00h allow window to be moved horizontally
  1940.     01h allow window to be moved vertically
  1941.     02h allow window to change width
  1942.     03h allow window to change height
  1943.     04h allow window to be scrolled horizontally
  1944.     05h allow window to be scrolled vertically
  1945.     06h allow "Close Window" menu selection for application
  1946.     07h allow "Hide Window" menu selection for application
  1947.     08h allow application to be suspended ("Rearrange/Freeze")
  1948.     0Eh allow "Scissors" menu
  1949.     10h allow DESQview main menu to be popped up
  1950.     11h allow "Switch Windows" menu
  1951.     12h allow "Open Window" menu
  1952.     13h allow "Quit" menu selection
  1953.     20h-33h opposite of 00h-13h, disallow specified action
  1954.     40h notify if horizontal position of window changes
  1955.     41h notify if vertical position of window changes
  1956.     42h notify if width of window changes
  1957.     43h notify if height of window changes
  1958.     44h notify if window scrolled horizontally
  1959.     45h notify if window scrolled vertically
  1960.     46h notify if window is closed--program has to clean up and exit itself
  1961.     47h notify if window is hidden
  1962.     48h notify if "?" on main menu selected
  1963.     49h notify if pointer message sent to window
  1964.     4Ah notify if window is placed in foreground
  1965.     4Bh notify if window is placed in background
  1966.     4Ch notify if video mode changes
  1967.     4Dh notify if "Scissors" menu "Cut" option selected
  1968.     4Eh notify if "Scissors" menu "Copy" option selected
  1969.     4Fh notify if "Scissors" menu "Paste" option selected
  1970.     50h notify if DESQview main menu about to pop up
  1971.     51h notify if DESQview main menu popped down
  1972.     60h-71h     opposite of 40h-51h: don't notify on specified event
  1973.     84h attach window to parent task's window (both move together)
  1974.     85h detach window from parent task's window (may move independently)
  1975.     86h disable background operation for application
  1976.     87h enable running in background
  1977.     88h set minimum size of physical window
  1978.         BYTE rows
  1979.         BYTE columns
  1980.     89h set maximum size of physical window
  1981.         BYTE rows
  1982.         BYTE cols
  1983.     8Ah set primary asynchronous notification routine
  1984.         DWORD address of routine, 0000h:0000h means none (see also below)
  1985.     8Bh set async notification parameter
  1986.         DWORD 32-bit value passed to 8Ah async routine in DS:SI
  1987.     ACh (DV2.2+) perform regular select field attribute processing
  1988.     ADh (DV2.2+) protect attributes in selected field from being lost
  1989.     AEh make window default notify window for owning app (API level 2.00+)
  1990.     AFh set selected field marker character
  1991.         BYTE character to display at left edge of selected fields
  1992.     BCh set standard field processing mode 
  1993.     BDh set alternate field processing mode (enables cursor pad for menus)
  1994.     BEh disables changing reverse logical attributes with ECh opcode
  1995.     BFh enables changing reverse logical attributes with ECh opcode
  1996.     C0h make current window topmost in system
  1997.     C1h force current process into foreground
  1998.     C2h make current window topmost in process
  1999.     C3h position mouse pointer relative to origin of current field
  2000.         BYTE rows below upper left corner of field
  2001.         BYTE columns to right of upper left corner of field
  2002.     C4h position mouse pointer relative to origin of given field
  2003.         BYTE field number
  2004.         BYTE rows below upper left corner of field
  2005.         BYTE columns to right of upper left corner of field
  2006.     C5h orphan current window (also hides it)
  2007.         Note: must be last in stream; all subsequent commands ignored
  2008.     C6h show all windows for this process
  2009.     C7h hide all windows for this process
  2010.     C8h suspend process and hide all its windows
  2011.     C9h force current process into background
  2012.     CAh make current window bottom-most in process
  2013.     CBh cancel current window manager operation, remove DV menu, give 
  2014.         control to topmost application
  2015.     CCh orphan window and give it to the system for use as paste data
  2016.     CEh reorder windows
  2017.         DWORD pointer to null-terminated list of words
  2018.           each word is segment of object handle for a window
  2019.     FFh no operation
  2020.  
  2021. MODES 14h to 1Fh "USER STREAMS"
  2022.     normally NOPs, but may be defined by SETESC message to invoke FAR
  2023.     routines, one for each mode number
  2024.       on entry to handler,
  2025.         DS:SI -> first byte of actual stream (not header)
  2026.         CX = #bytes in stream
  2027.         ES:DI = window's handle
  2028.  
  2029. Asynchronous notification routine defined by manager stream 8Ah called with:
  2030.     ES:DI = handle of window
  2031.     DS:SI is 32-bit value set by 8Bh manager stream opcode
  2032.        mailbox contains message indicating event
  2033.           Opcode
  2034.            40h  horizontal movement
  2035.            DWORD object handle of window
  2036.            BYTE     new row
  2037.            BYTE     new col
  2038.            41h  vertical movement
  2039.            DWORD object handle of window
  2040.            BYTE     new row
  2041.            BYTE     new col
  2042.            42h  horizontal size change
  2043.            DWORD object handle of window
  2044.            BYTE     new rows
  2045.            BYTE     new cols
  2046.            43h  vertical size change
  2047.            DWORD object handle of window
  2048.            BYTE     new rows
  2049.            BYTE     new cols
  2050.            44h  scrolled horizontally
  2051.            DWORD object handle of window
  2052.            BYTE     mouse row within window
  2053.            BYTE     mouse column within window
  2054.            BYTE     field mouse is on, 0 if none
  2055.            BYTE     amount moved: >0 right, <0 left, 0 done
  2056.            45h  scrolled vertically
  2057.            DWORD object hande of window
  2058.            BYTE     mouse row within window
  2059.            BYTE     mouse column within window
  2060.            BYTE     field mouse is on, 0 if none
  2061.            BYTE     amount moved: >0 down, <0 up, 0 done
  2062.            46h  window close request
  2063.            DWORD object handle of window
  2064.            BYTE     mouse pointer row
  2065.            BYTE     mouse pointer column
  2066.            BYTE     field mouse is on, 0 if none
  2067.            47h  application's windows hidden
  2068.            48h  Help for Program selected
  2069.            DWORD object handle of window
  2070.            BYTE     mouse pointer row
  2071.            BYTE     mouse pointer column
  2072.            BYTE     field mouse is on, 0 if none
  2073.            49h  pointer message sent to window
  2074.            DWORD pointer handle which received message
  2075.            4Ah  switched to window from another ("raise")
  2076.            4Bh  switched away from the window ("lower")
  2077.            4Ch  video mode changed
  2078.            BYTE new BIOS video mode
  2079.            4Dh  Scissors/cUt selected
  2080.            DWORD object handle of window
  2081.            BYTE     row of upper left corner
  2082.            BYTE     column of upper left corner
  2083.            BYTE     field number ul corner is in, 0=none
  2084.            DWORD handle of orphaned window created with
  2085.              copy of data from specified region
  2086.            BYTE     height of region
  2087.            BYTE     width of region
  2088.            4Eh  Scissors/Copy selected
  2089.            DWORD object handle of window
  2090.            BYTE     row of upper left corner
  2091.            BYTE     column of upper left corner
  2092.            BYTE     field number ul corner is in, 0=none
  2093.            DWORD handle of orphaned window created with
  2094.              copy of data from specified region
  2095.            BYTE     height of region
  2096.            BYTE     width of region
  2097.            4Fh  Scissors/Paste selected
  2098.            DWORD object handle of window
  2099.            BYTE     row of upper left corner
  2100.            BYTE     column of upper left corner
  2101.            BYTE     field number ul corner is in, 0=none
  2102.            DWORD handle of orphaned window with data
  2103.            BYTE     height of region
  2104.            BYTE     width of region
  2105.             Note: orphaned data window should be adopted or freed
  2106.                 when done
  2107.            50h  main menu about to pop up
  2108.            51h  main menu popped down
  2109. Return: all registers unchanged
  2110. ----------1512--BH06-------------------------
  2111. INT 15 - DESQview 2.20+ - SEND MESSAGE - "SETPRI" - SET PRIORITY WITHIN OBJECTQ
  2112.     AH = 12h
  2113.     BH = 06h
  2114.     BL = object
  2115.         00h object handle in DWORD on top of stack
  2116.         mailbox, keyboard, pointer, or timer
  2117.         (DV 2.50+) window
  2118.         01h (DV 2.50+) current task's window
  2119.         04h given task's keyboard (task's handle on top of stack)
  2120.         05h current task's default keyboard
  2121.     STACK: DWORD new priority of object in task's OBJECTQ
  2122.             (new priority of task if window handle)
  2123. Notes:    initially all objects have the same default value.  Should only make 
  2124.       relative adjustments to this default value.
  2125.     when changing priorities, all objects already on the objectq are
  2126.       reordered
  2127.     for window handles, only the non-blocked task(s) with the highest
  2128.       priority receive CPU time under DESQview 2.50-2.52; the default
  2129.       priority is 0Ah
  2130. SeeAlso: AH=12h/BH=07h,AH=12h/BH=87h
  2131. ----------1512--BH07-------------------------
  2132. INT 15 - DESQview 2.20+ - SEND MESSAGE - "GETPRI" - GET PRIORITY WITHIN OBJECTQ
  2133.     AH = 12h
  2134.     BH = 07h
  2135.     BL = object
  2136.         00h object handle in DWORD on top of stack
  2137.         mailbox, keyboard, pointer, or timer
  2138.         (DV 2.50+) window
  2139.         01h (DV 2.50+) current task's window
  2140.         04h given task's keyboard (task's handle on top of stack)
  2141.         05h current task's default keyboard
  2142. Return: STACK: DWORD object priority
  2143. Note:    initially all objects have the same default value.  Should only make 
  2144.       relative adjustments to this default value.
  2145. SeeAlso: AH=12h/BH=06h
  2146. ----------1512--BH08-------------------------
  2147. INT 15 - TopView - SEND MESSAGE - "SIZEOF" - GET OBJECT SIZE
  2148.     AH = 12h
  2149.     BH = 08h
  2150.     BL = object
  2151.         00h handle in DWORD on top of stack
  2152.         window: total character positions in window
  2153.         timer: elapsed time since timer started
  2154.         pointer: number of messages queued to pointer object
  2155.         panel: number of panels in panel file
  2156.         keyboard: number of input buffers queued
  2157.         01h total chars in current task's default window
  2158.         02h number of messages in task's mailbox (task's handle on stack)
  2159.         03h number of messages in current task's mailbox
  2160.         04h number of input buffers queued in task's kbd (handle on stack)
  2161.         05h number of input buffers queued for current task's default kbd
  2162.         06h number of objects queued in OBJECTQ (task's handle on stack)
  2163.         07h number of objects queued in current task's OBJECTQ
  2164.         0Ch (DV 2.26+) total chars in window owning handle on top of stack
  2165.         0Dh (DV 2.26+) total chars in parent task's window
  2166. Return: DWORD on top of stack is result
  2167. Note:    for panel objects, a count of zero is returned if no panel file is open
  2168.       for the object
  2169. SeeAlso: AH=12h/BH=04h,AH=12h/BH=09h
  2170. ----------1512--BH09-------------------------
  2171. INT 15 - TopView - SEND MESSAGE - "LEN" - GET OBJECT LENGTH
  2172.     AH = 12h
  2173.     BH = 09h
  2174.     BL = object
  2175.         00h handle in DWORD on top of stack
  2176.         window: get chars/line
  2177.         timer: get 1/100 seconds remaining before timer expires
  2178.         mailbox: (DV/X) get number of bytes queued to mailbox
  2179.         01h get number of chars/line in current task's default window
  2180.         0Ch (DV 2.26+) get chars/line in window owning handle on top of stk
  2181.         0Dh (DV 2.26+) get chars/line in parent task's window
  2182. Return: DWORD on top of stack is length
  2183. SeeAlso: AH=12h/BH=08h
  2184. ----------1512--BH0A-------------------------
  2185. INT 15 - TopView - SEND MESSAGE - "ADDTO" - WRITE CHARS AND ATTRIBS TO WINDOW
  2186.     AH = 12h
  2187.     BH = 0Ah
  2188.     BL = window to write to
  2189.         00h window handle is DWORD on top of stack
  2190.         01h current task's default window
  2191.         0Ch (DV 2.26+) default window of task owning handle on top of stack
  2192.         0Dh (DV 2.26+) default window of parent of current task
  2193.     STACK:    DWORD count of attributes
  2194.         DWORD address of attribute string
  2195.         DWORD count of characters
  2196.         DWORD address of character string
  2197. Notes:    if one string is longer than the other, the shorter one will be reused
  2198.       until the longer one is exhausted
  2199.     the cursor is left just after the last character written
  2200. SeeAlso: AH=12h/BH=0Bh"WINDOW"
  2201. ----------1512--BH0A-------------------------
  2202. INT 15 - TopView - SEND MESSAGE - "ADDTO" - SEND MAILBOX MESSAGE/STAT BY VALUE
  2203.     AH = 12h
  2204.     BH = 0Ah
  2205.     BL = mailbox to write to
  2206.         00h handle is DWORD on top of stack
  2207.         02h default mailbox of task whose handle is on top of stack
  2208.         03h current task's default mailbox
  2209.     STACK:    DWORD    status (low byte)
  2210.         DWORD    length of message
  2211.         DWORD    address of message
  2212. Notes:    the message is copied into either system or common memory
  2213.     insufficient memory normally causes the process to be aborted; under
  2214.       DESQview 2.2+, failed writes may return CF set instead (see AX=DE15h)
  2215. SeeAlso: AH=12h/BH=0Bh"MAILBOX"
  2216. ----------1512--BH0A-------------------------
  2217. INT 15 - TopView - SEND MESSAGE - "ADDTO" - SET OBJECT BITS
  2218.     AH = 12h
  2219.     BH = 0Ah
  2220.     BL = object
  2221.         00h handle is DWORD on top of stack
  2222.         timer: start timer for specified interval
  2223.         pointer: set control flags
  2224.         keyboard: set control flags
  2225.         04h set control flags on KEYBOARD object (handle on top of stack)
  2226.         05h set control flags on task's default KEYBOARD object
  2227.     STACK: (if timer)   DWORD duration in 1/100 seconds
  2228.            (otherwise)  DWORD bits to set
  2229. SeeAlso: AH=12h/BH=0Bh"OBJECT"
  2230.  
  2231. For keyboard objects, the bits have the following significance:
  2232.     bit 15 reserved, can't be set
  2233.     bit 14 unused
  2234.     bit 13 reserved, can't be set
  2235.     bit 12-6 unused
  2236.     bit 5  (DV 2.2+) exclusive input
  2237.     bit 4  filter all keys (used with handler established by SETESC)
  2238.         if 0, only keys that would normally be displayed are filtered
  2239.     bit 3  program continues executing while input in progress
  2240.     bit 2  insert mode active for field mode
  2241.     bit 1  hardware cursor displayed when task is hardware cursor owner
  2242.         must be set if keyboard in field mode and field table includes
  2243.         input fields
  2244.     bit 0  keyboard is in field mode rather than keystroke mode
  2245.  
  2246. For pointer objects, the bits have the following significance:
  2247.     bit 15 reserved, can't be set
  2248.     bit 14-8 unused
  2249.     bit 7  mouse pointer is hidden while in window
  2250.     bit 6  get messages even if window not topmost
  2251.     bit 5  get messages even if window not foreground
  2252.     bit 4  multiple clicks separated by less than 1/3 second are counted
  2253.         and returned in a single message
  2254.     bit 3  pointer position is relative to screen origin, not window origin
  2255.     bit 2  send message on button release as well as button press
  2256.     bit 1  (DV 2.23+) send message with row=FFFFh and col=FFFFh whenever
  2257.         pointer leaves the window
  2258.     bit 0  send message only on button activity, not movement
  2259.            DV-specific, and INT 15/AX=DE0Fh must have been called first
  2260. ----------1512--BH0B-------------------------
  2261. INT 15 - TopView - SEND MESSAGE - "SUBFROM" - WRITE ATTRIBUTES TO WINDOW
  2262.     AH = 12h
  2263.     BH = 0Bh
  2264.     BL = window to write attributes to
  2265.         00h handle is DWORD on top of stack
  2266.         01h current task's default window
  2267.         0Ch (DV 2.26+) default window of task owning handle on top of stack
  2268.         0Dh (DV 2.26+) default window of parent of current task
  2269.     STACK:    DWORD number of attributes to write
  2270.         DWORD address of attributes
  2271. Note:    the attributes are written starting at the current cursor position; the
  2272.       cursor is left just after the last position written
  2273. SeeAlso: AH=12h/BH=0Ah"WINDOW"
  2274. ----------1512--BH0B-------------------------
  2275. INT 15 - TopView - SEND MESSAGE - "SUBFROM" - SEND MAILBOX MESSAGE/STAT BY REF
  2276.     AH = 12h
  2277.     BH = 0Bh
  2278.     BL = mailbox to write to
  2279.         00h handle is DWORD on top of stack
  2280.         02h default mailbox of task whose handle is on top of stack
  2281.         03h current task's default mailbox
  2282.     STACK:    DWORD    status (low byte)
  2283.         DWORD    length of message
  2284.         DWORD    address of message
  2285. Notes:    only a pointer to the message is stored, but the write may still fail
  2286.       due to insufficient memory
  2287.     under DV 2.2+, failed mailbox writes may return CF set (see AX=DE15h)
  2288. SeeAlso: AH=12h/BH=0Ah"MAILBOX"
  2289. ----------1512--BH0B-------------------------
  2290. INT 15 - TopView - SEND MESSAGE - "SUBFROM" - REMOVE OBJECT FROM OBJECTQ
  2291.     AH = 12h
  2292.     BH = 0Bh
  2293.     BL = OBJECTQ from which to remove all copies of a particular object
  2294.         06h OBJECTQ of task whose handle is on top of stack
  2295.         07h task's default OBJECTQ
  2296.     STACK:    DWORD    handle of object to remove
  2297. Note:    should be sent whenever an object is erased or closed
  2298. ----------1512--BH0B-------------------------
  2299. INT 15 - TopView - SEND MESSAGE - "SUBFROM" - RESET OBJECT BITS
  2300.     AH = 12h
  2301.     BH = 0Bh
  2302.     BL = object
  2303.         00h handle is DWORD on top of stack
  2304.         pointer: reset control flags
  2305.         keyboard: reset control flags
  2306.         04h clear control flags on KEYBOARD object (handle on top of stack)
  2307.         05h clear control flags on task's default KEYBOARD object
  2308.     STACK:    DWORD    which bits to clear (see AH=12h/BH=0Ah"OBJECT")
  2309. SeeAlso: AH=12h/BH=0Ah"OBJECT"
  2310. ----------1512--BH0C-------------------------
  2311. INT 15 - TopView - SEND MESSAGE - "OPEN" - OPEN OBJECT
  2312.     AH = 12h
  2313.     BH = 0Ch
  2314.     BL = object
  2315.         00h handle is DWORD on top of stack
  2316.         window:      fill with given character from scroll origin to end
  2317.         keyboard: attach to a window
  2318.         timer:      open
  2319.         pointer:  start taking input for window
  2320.         panel:      associate with a panel file
  2321.         01h fill task's default window with given char from scrl org to end
  2322.         02h open given task's mailbox for input (task's handle on stack)
  2323.         03h open current task's mailbox
  2324.         04h attach a KEYBOARD to a window (handle on top of stack)
  2325.         05h attach task's default KEYBOARD to a window
  2326.         06h open a task's OBJECTQ (task's handle on top of stack)
  2327.         07h open current task's OBJECTQ
  2328.         0Ch (DV 2.26+) fill def window of task owning handle on top of stck
  2329.         0Dh (DV 2.26+) fill default window of parent of current task
  2330.      STACK: (if window)   DWORD character to fill with
  2331.         (if keyboard) DWORD handle of window to attach to
  2332.         (if pointer)  DWORD handle of window to attach to
  2333.         (if panel)    DWORD length of filename or resident panel
  2334.                   DWORD address of filename or resident panel
  2335.         (otherwise)   nothing
  2336. Notes:    if first byte of panel file name is 1Bh, then the "name" IS a panel
  2337.     if first two bytes of panel file "name" are C0hC3h, then the "name" IS
  2338.       the panel file
  2339.     result code of open may be retrieved with STATUS message
  2340.     logical cursor is left at scroll origin after filling window
  2341.     the task opening a mailbox becomes its owner, and the only task allowed
  2342.       to read the mailbox
  2343.     messages are only sent to a pointer object when the mouse is positioned
  2344.       in the window to which the pointer has been attached
  2345.     there is no need to explicitly open a timer object, as ADDTO and WRITE
  2346.       messages automatically open the timer
  2347. SeeAlso: AH=12h/BH=0Dh,AH=12h/BH=14h"LOCK"
  2348. ----------1512--BH0D-------------------------
  2349. INT 15 - TopView - SEND MESSAGE - "CLOSE" - CLOSE OBJECT
  2350.     AH = 12h
  2351.     BH = 0Dh
  2352.     BL = object
  2353.         00h handle is DWORD on top of stack
  2354.         timer:      close
  2355.         keyboard: detach from window and discard queued input
  2356.         pointer:  stop taking input
  2357.         panel:      close
  2358.         mailbox:  close, unlock, and discard any pending messages
  2359.         02h close given task's mailbox (task's handle on top of stack)
  2360.         03h close task's default mailbox
  2361.         04h close KEYBOARD object (handle on top of stack)
  2362.         05h close task's default KEYBOARD
  2363.         06h close givent task's OBJECTQ (task's handle on top of stack)
  2364.         07h close current task's OBJECTQ
  2365. Notes:    when an OBJECTQ is closed, each object in the OBJECTQ is sent an
  2366.       ERASE message (AH=12h/BH=0Eh)
  2367.     when a panel object is closed, the panel file and any panels currently
  2368.       in use are freed; window and keyboard objects created by APPLY are
  2369.       not affected, but field mode input ceases
  2370.     open but idle timer objects consume a small amount of CPU time
  2371. SeeAlso: AH=12h/BH=0Ch,AH=12h/BH=0Eh,AH=12h/BH=14h"LOCK"
  2372. ----------1512--BH0E-------------------------
  2373. INT 15 - TopView - SEND MESSAGE - "ERASE" - ERASE OBJECT
  2374.     AH = 12h
  2375.     BH = 0Eh
  2376.     BL = object
  2377.         00h handle is DWORD on top of stack
  2378.         window:      clear from scroll origin to end of window
  2379.         keyboard: discard input
  2380.         timer:      cancel current interval
  2381.         pointer:  discard all pending messages
  2382.         mailbox:  discard all pending messages
  2383.         01h clear task's default window from scroll origin to end
  2384.         02h discard all queued messages in mailbox (handle on top of stack)
  2385.         03h discard all queued messages in current task's default mailbox
  2386.         04h discard all input queued to KEYBOARD (handle on top of stack)
  2387.         05h discard all input queued to task's default KEYBOARD
  2388.         06h remove all objects from OBJECTQ (task's handle on top of stack)
  2389.         07h remove all objects from current task's OBJECTQ
  2390.         0Ch (DV 2.26+) clear window of task owning handle on top of stack
  2391.         0Dh (DV 2.26+) clear default window of parent of current task
  2392. Note:    when an OBJECTQ is erased, each object in the OBJECTQ is also erased
  2393. SeeAlso: AH=12h/BH=02h
  2394. ----------1512--BH0F-------------------------
  2395. INT 15 - TopView - SEND MESSAGE - "STATUS" - GET OBJECT STATUS
  2396.     AH = 12h
  2397.     BH = 0Fh
  2398.     BL = object
  2399.         00h handle is DWORD on top of stack
  2400.         timer:     is it running?
  2401.         pointer: return status of last message
  2402.         panel:     verify success of last OPEN or APPLY
  2403.         02h return status of last msg READ from mailbox (handle on stack)
  2404.         03h return status of last msg READ from task's default mailbox
  2405.         04h get status of last msg from task's KEYBOARD (task handle on stk)
  2406.         05h get status of last msg from task's default KEYBOARD
  2407.         06h return whether OBJECTQ is open or not (handle on top of stack)
  2408.         07h return whether task's default OBJECTQ is open or not
  2409. Return: DWORD on top of stack is status
  2410. Notes:    if object is a panel object, the status indicates the error code:
  2411.       00h successful
  2412.       14h panel name not in panel directory
  2413.       15h not enough memory to apply panel
  2414.       16h invalid panel format
  2415.       17h panel file already open
  2416.       81h-92h  DOS error codes+80h            \  codes > 80h indicate
  2417.       95h not enough memory to open panel file     > that the panel was
  2418.       98h null panel file name            /  not opened
  2419.     if object is a timer, the status is:
  2420.       00000000h open but not running
  2421.       40000000h open and running
  2422.       80000000h closed
  2423.     if object is an OBJECTQ, the status is:
  2424.       00000000h open
  2425.       80000000h closed
  2426.     if object is a keyboard in keystroke mode, the status is the extended
  2427.       character code (scan code) of teh last keystroke
  2428.     if object is a keyboard in field mode, the status indicates the reason
  2429.       for the last return from the field manager
  2430.       00h Enter key pressed
  2431.       01h Button 1 or keystroke selection
  2432.       02h Button 2
  2433.       03h validation
  2434.       04h auto Enter on field
  2435.       1Bh Escape pressed
  2436.       46h ^Break pressed
  2437.       other: extended code for key terminating input
  2438.     the status of mailbox messages sent by the window manager is always 80h
  2439.     the status of a pointer message is the same as the status field in the
  2440.       message
  2441. SeeAlso: AH=12h/BH=04h"READ"
  2442. ----------1512--BH10-------------------------
  2443. INT 15 - TopView - SEND MESSAGE - "EOF" - GET OBJECT EOF STATUS
  2444.     AH = 12h
  2445.     BH = 10h
  2446.     BL = object
  2447.         00h handle is DWORD on top of stack
  2448.         window: return TRUE if logical cursor past end of window
  2449.         mailbox: ???
  2450.         01h returns TRUE if logical cursor past end of task's def window
  2451.         02h return ??? for task's mailbox (task's handle on top of stack)
  2452.         03h return ??? for current task's mailbox
  2453.         0Ch (DV 2.26+) check log crsr of window owning handle on top of stk
  2454.         0Dh (DV 2.26+) check log cursor of window of parent task
  2455. Return: DWORD on top of stack is status
  2456. ----------1512--BH11-------------------------
  2457. INT 15 - TopView - SEND MESSAGE - "AT" - POSITION OBJECT CURSOR
  2458.     AH = 12h
  2459.     BH = 11h
  2460.     BL = window for which to move cursor
  2461.         00h window's handle is DWORD on top of stack
  2462.         01h task's default window
  2463.         0Ch (DV 2.26+) default window of task owning handle on top of stack
  2464.         0Dh (DV 2.26+) default window of parent of current task
  2465.     STACK: DWORD column
  2466.            DWORD row
  2467. ----------1512--BH11-------------------------
  2468. INT 15 - TopView - SEND MESSAGE - "SETNAME" - ASSIGN NAME TO MAILBOX
  2469.     AH = 12h
  2470.     BH = 11h
  2471.     BL = mailbox to name
  2472.         00h DWORD on top of stack is mailbox handle
  2473.         02h use given task's mailbox (task's handle on top of stack)
  2474.         03h use current task's default mailbox
  2475.     STACK: DWORD length of name
  2476.            DWORD address of name
  2477. SeeAlso: AH=12h/BH=12h"GETNAME",AX=DE0Eh
  2478. ----------1512--BX1100-----------------------
  2479. INT 15 - TopView - SEND MESSAGE - "SETSCALE" - SET POINTER SCALE FACTOR
  2480.     AH = 12h
  2481.     BX = 1100h
  2482.     STACK: DWORD object handle for pointer object
  2483.            DWORD number of colums to scale pointer position to
  2484.            DWORD number of rows to scale pointer position to
  2485. SeeAlso: AH=12h/BX=1200h
  2486. ----------1512--BH12-------------------------
  2487. INT 15 - TopView - SEND MESSAGE - "READN" - GET NEXT N OBJECT BYTES
  2488.     AH = 12h
  2489.     BH = 12h
  2490.     BL = window to read from
  2491.         00h handle is DWORD on top of stack
  2492.         01h read next N chars or attributes on task's default window
  2493.         0Ch (DV 2.26+) read window of task owning handle on top of stack
  2494.         0Dh (DV 2.26+) read default window of parent of current task
  2495.     STACK: DWORD count
  2496. Return: STACK: DWORD number of bytes actually read
  2497.            DWORD address of buffer containing data
  2498. Notes:    reading starts at the current logical cursor position; the cursor is
  2499.       updated to point at the character following the last one read
  2500.     any translucent blanks (FFh) which are visible on screen are changed
  2501.       to the character which is seen through them
  2502.     the string produced by the read is placed in an input buffer which may
  2503.       be reused by the next READ or READN of a window
  2504.     window stream opcodes D8h and D9h determine whether the read returns
  2505.       characters or attributes
  2506. SeeAlso: AH=12h/BH=04h"WINDOW",AH=12h/BH=05h"WINDOW"
  2507. ----------1512--BH12-------------------------
  2508. INT 15 - DESQview 2.50+ - SEND MESSAGE - "GETNAME" - GET NAME OF MAILBOX
  2509.     AH = 12h
  2510.     BH = 12h
  2511.     BL = mailbox for which to retrieve name
  2512.         00h DWORD on top of stack is mailbox handle
  2513.         02h use given task's mailbox (task's handle on top of stack)
  2514.         03h use current task's default mailbox
  2515.     STACK: DWORD length of buffer for name
  2516.            DWORD pointer to buffer
  2517. Return: STACK: DWORD length of returned name (or size of buffer, if less)
  2518. Program: DESQview 2.5x is distributed as part of DESQview/X 1.0x
  2519. Note:    the returned name is not NUL-terminated
  2520. SeeAlso: AH=12h/BH=11h"SETNAME",AX=DE0Eh
  2521. ----------1512--BX1200-----------------------
  2522. INT 15 - TopView - SEND MESSAGE - "GETSCALE" - GET POINTER SCALE FACTOR
  2523.     AH = 12h
  2524.     BX = 1200h
  2525.     STACK: DWORD object handle for pointer
  2526. Return: STACK: DWORD pointer pos scaled as if window were this many colums wide
  2527.            DWORD pointer pos scaled as if window were this many rows high
  2528. SeeAlso: AH=12h/BX=1100h
  2529. ----------1512--BH13-------------------------
  2530. INT 15 - TopView - SEND MESSAGE - "REDRAW" - REDRAW WINDOW
  2531.     AH = 12h
  2532.     BH = 13h
  2533.     BL = window object
  2534.         00h DWORD on top of stack is handle for window to redraw
  2535.         01h redraw task's default window
  2536.         0Ch (DV 2.26+) redraw window of task owning handle on top of stack
  2537.         0Dh (DV 2.26+) redraw default window of parent of current task
  2538. SeeAlso: AH=12h/BH=05h"WINDOW",AH=12h/BH=0Eh
  2539. ----------1512--BH13-------------------------
  2540. INT 15 - DESQview 2.50+ - SEND MESSAGE - "READINTO" - GET NEXT MAIL MESSAGE
  2541.     AH = 12h
  2542.     BH = 13h
  2543.     BL = mailbox from which to read
  2544.         00h DWORD on top of stack is mailbox handle
  2545.         02h use given task's mailbox (task's handle on top of stack)
  2546.         03h use current task's default mailbox
  2547.     STACK: DWORD size of buffer in bytes
  2548.            DWORD pointer to buffer
  2549. Return: STACK: DWORD number of bytes read
  2550. Program: DESQview 2.5x is distributed as part of DESQview/X 1.0x
  2551. Notes:    this call blocks if no input is available, but will return less than
  2552.       the requested number of bytes if some (but insufficient) data is
  2553.       available
  2554.     use this call instead of AH=12h/BH=04h if the mailbox has flag bits
  2555.       4 or 5 set, as common memory may be exhausted by that call when
  2556.       attempting to read the next message
  2557. SeeAlso: AH=12h/BH=04h"READ",AH=12h/BH=05h,AH=12h/BH=16h
  2558. ----------1512--BX1300-----------------------
  2559. INT 15 - TopView - SEND MESSAGE - "SETICON" - SPECIFY POINTER ICON
  2560.     AH = 12h
  2561.     BX = 1300h
  2562.     STACK: DWORD object handle for pointer
  2563.            DWORD character to use for pointer
  2564. ----------1512--BH14-------------------------
  2565. INT 15 - TopView - SEND MESSAGE - "SETESC" - SET ESCAPE ROUTINE ADDRESS
  2566.     AH = 12h
  2567.     BH = 14h
  2568.     BL = message modifier
  2569.         00h handle is DWORD on top of stack
  2570.         01h define user stream
  2571.         04h intercept keystrokes from KEYBOARD to a window (handle on stack)
  2572.         05h intercept keystrokes from task's default KEYBOARD to a window
  2573.     STACK: (if window)   DWORD user stream number (14h-1Fh)
  2574.                  DWORD address of FAR user stream handler
  2575.            (if keyboard) DWORD address of FAR filter function
  2576.  
  2577. The keyboard filter function is called when the keyboard is in field mode.  On
  2578. entry,
  2579.     AL = character
  2580.     AH = 00h or extended ASCII code if AL = 00h
  2581.     BL = field number
  2582.     CH = cursor column
  2583.     CL = cursor row
  2584.     DL = field type modifier (sixth item in field table entry)
  2585.     DH = seventh item in field table entry
  2586.     ES:SI = window's handle
  2587.     DS:DI -> field table entry for field containing the cursor
  2588. The filter function should return
  2589.     AH = 00h use keystroke
  2590.          01h ignore keystroke
  2591.          FFh beep and ignore keystroke
  2592. Note: the filter function is not allowed to make INT 15, DOS, or BIOS calls
  2593. ----------1512--BH14-------------------------
  2594. INT 15 - TopView - SEND MESSAGE - "LOCK" - REQUEST EXCLUSIVE ACCESS TO RESOURCE
  2595.     AH = 12h
  2596.     BH = 14h
  2597.     BL = object
  2598.         00h mailbox handle is DWORD on top of stack
  2599.         02h use given task's mailbox (task's handle on top of stack)
  2600.         03h use current task's default mailbox
  2601. Note:    release exclusive access by sending CLOSE message to mailbox
  2602.     access may be requested multiple times, and requires multiple CLOSEs
  2603. SeeAlso: AH=12h/BH=0Dh
  2604. ----------1512--BH15-------------------------
  2605. INT 15 - DESQview v2.20+ - SEND MESSAGE - "SETFLAGS" - SET OBJECT FLAGS
  2606.     AH = 12h
  2607.     BH = 15h
  2608.     BL = object
  2609.         00h DWORD on top of stack
  2610.         mailbox, keyboard, or pointer only
  2611.         02h mailbox for task whose handle is on top of stack
  2612.         03h mailbox for current task
  2613.         04h keyboard for task whose handle is on top of stack
  2614.         05h keyboard for current task
  2615.     STACK: DWORD flags
  2616.         if mailbox:
  2617.             bit 0: all mail messages in common memory
  2618.             bit 1: allow write even if closed
  2619.             bit 2: don't erase messages when mailbox closed
  2620.             bit 4: (DV/X) append messages with like status and
  2621.                 sender (stream-oriented mail)
  2622.             bit 5: (DV/X) store mail in expanded memory (pool
  2623.                 grows as needed)
  2624.             bit 6: (DV/X) make mailbox into non-owned mailbox
  2625.         if keyboard:
  2626.             bit 5: exclusive input when keyboard in use for input
  2627. Return: nothing
  2628. Notes:    only available if the API level has been set to at least 2.20
  2629.     equivalent to performing SUBFROM and ADDTO calls on the object
  2630.     if a mailbox has bits 4 or 5 set, you must use "READINTO" rather than
  2631.       "READ" (see AH=12h/BX=1300h"READINTO") to retrieve messages
  2632. SeeAlso: AH=12h/BH=0Ah,AH=12h/BH=0Bh,AH=12h/BH=16h
  2633. ----------1512--BH16-------------------------
  2634. INT 15 - DESQview v2.20+ - SEND MESSAGE - "GETFLAGS" - GET OBJECT FLAGS
  2635.     AH = 12h 
  2636.     BH = 16h
  2637.     BL = object
  2638.         00h DWORD on top of stack
  2639.         mailbox, keyboard, or pointer only
  2640.         02h mailbox for task whose handle is on top of stack
  2641.         03h mailbox for current task
  2642.         04h keyboard for task whose handle is on top of stack
  2643.         05h keyboard for current task
  2644. Return: STACK: DWORD current control flags (see AH=12h/BH=15h)
  2645. Notes:    only available if the API level has been set to at least 2.20
  2646.     if a mailbox has bits 4 or 5 set, you must use "READINTO" rather than
  2647.       "READ" (see AH=12h/BH=13h"READINTO") to retrieve messages
  2648. SeeAlso: AH=12h/BH=0Ah,AH=12h/BH=0Bh,AH=12h/BH=13h"READINTO",AH=12h/BH=15h
  2649. ----------1512--BH17-------------------------
  2650. INT 15 - DESQview v2.42-2.52 - BUG
  2651.     AH = 12h
  2652.     BH = 17h
  2653.     BL = object
  2654.         00h DWORD on top of stack
  2655.         mailbox, keyboard, or pointer only
  2656.         02h mailbox for task whose handle is on top of stack
  2657.         03h mailbox for current task
  2658.         04h keyboard for task whose handle is on top of stack
  2659.         05h keyboard for current task
  2660. Notes:    due to a fencepost error, message 17h is accepted for mailboxes,
  2661.       keyboards, and pointers, but causes a random branch
  2662.     DESQview v2.50-2.52 are distributed as part of DESQview/X v1.02
  2663. ----------1512--BH80-------------------------
  2664. INT 15 - DESQview v2.50+ - SEND MESSAGE WITH ERROR RECOVERY
  2665.     AH = 12h
  2666.     BH = 80h
  2667. Note:    this function is identical to AH=12h/BH=00h, except that DESQview will
  2668.       not pop up a "Programming Error" window, instead returning an error
  2669.       code in AL:
  2670.         00h no error
  2671.         01h invalid values
  2672.         02h alias invalid
  2673.         03h handle valid but wrong type
  2674.         04h invalid handle
  2675. SeeAlso: AH=12h/BH=00h
  2676. ----------1512--BH81-------------------------
  2677. INT 15 - DESQview v2.50+ - SEND MESSAGE WITH ERROR RECOVERY
  2678.     AH = 12h
  2679.     BH = 81h
  2680. Note:    this function is identical to AH=12h/BH=01h, except that DESQview will
  2681.       not pop up a "Programming Error" window, instead returning an error
  2682.       code in AL (see AH=12h/BH=80h)
  2683. SeeAlso: AH=12h/BH=01h
  2684. ----------1512--BH82-------------------------
  2685. INT 15 - DESQview v2.50+ - SEND MESSAGE WITH ERROR RECOVERY
  2686.     AH = 12h
  2687.     BH = 82h
  2688. Note:    this function is identical to AH=12h/BH=02h, except that DESQview will
  2689.       not pop up a "Programming Error" window, instead returning an error
  2690.       code in AL (see AH=12h/BH=80h)
  2691. SeeAlso: AH=12h/BH=02h
  2692. ----------1512--BH83-------------------------
  2693. INT 15 - DESQview v2.50+ - SEND MESSAGE WITH ERROR RECOVERY
  2694.     AH = 12h
  2695.     BH = 83h
  2696. Note:    this function is identical to AH=12h/BH=03h, except that DESQview will
  2697.       not pop up a "Programming Error" window, instead returning an error
  2698.       code in AL (see AH=12h/BH=80h)
  2699. SeeAlso: AH=12h/BH=03h,AH=12h/BX=0300h
  2700. ----------1512--BH84-------------------------
  2701. INT 15 - DESQview v2.50+ - SEND MESSAGE WITH ERROR RECOVERY
  2702.     AH = 12h
  2703.     BH = 84h
  2704. Note:    this function is identical to AH=12h/BH=04h, except that DESQview will
  2705.       not pop up a "Programming Error" window, instead returning an error
  2706.       code in AL (see AH=12h/BH=80h)
  2707. SeeAlso: AH=12h/BH=04h,AH=12h/BX=0400h
  2708. ----------1512--BH85-------------------------
  2709. INT 15 - DESQview v2.50+ - SEND MESSAGE WITH ERROR RECOVERY
  2710.     AH = 12h
  2711.     BH = 85h
  2712. Note:    this function is identical to AH=12h/BH=05h, except that DESQview will
  2713.       not pop up a "Programming Error" window, instead returning an error
  2714.       code in AL (see AH=12h/BH=80h)
  2715. SeeAlso: AH=12h/BH=05h
  2716. ----------1512--BH86-------------------------
  2717. INT 15 - DESQview v2.50+ - SEND MESSAGE WITH ERROR RECOVERY
  2718.     AH = 12h
  2719.     BH = 86h
  2720. Note:    this function is identical to AH=12h/BH=06h, except that DESQview will
  2721.       not pop up a "Programming Error" window, instead returning an error
  2722.       code in AL (see AH=12h/BH=80h)
  2723. SeeAlso: AH=12h/BH=06h
  2724. ----------1512--BH87-------------------------
  2725. INT 15 - DESQview v2.50+ - SEND MESSAGE WITH ERROR RECOVERY
  2726.     AH = 12h
  2727.     BH = 87h
  2728. Note:    this function is identical to AH=12h/BH=07h, except that DESQview will
  2729.       not pop up a "Programming Error" window, instead returning an error
  2730.       code in AL (see AH=12h/BH=80h)
  2731. SeeAlso: AH=12h/BH=07h
  2732. ----------1512--BH88-------------------------
  2733. INT 15 - DESQview v2.50+ - SEND MESSAGE WITH ERROR RECOVERY
  2734.     AH = 12h
  2735.     BH = 88h
  2736. Note:    this function is identical to AH=12h/BH=08h, except that DESQview will
  2737.       not pop up a "Programming Error" window, instead returning an error
  2738.       code in AL (see AH=12h/BH=80h)
  2739. SeeAlso: AH=12h/BH=08h
  2740. ----------1512--BH89-------------------------
  2741. INT 15 - DESQview v2.50+ - SEND MESSAGE WITH ERROR RECOVERY
  2742.     AH = 12h
  2743.     BH = 89h
  2744. Note:    this function is identical to AH=12h/BH=09h, except that DESQview will
  2745.       not pop up a "Programming Error" window, instead returning an error
  2746.       code in AL (see AH=12h/BH=80h)
  2747. SeeAlso: AH=12h/BH=09h
  2748. ----------1512--BH8A-------------------------
  2749. INT 15 - DESQview v2.50+ - SEND MESSAGE WITH ERROR RECOVERY
  2750.     AH = 12h
  2751.     BH = 8Ah
  2752. Note:    this function is identical to AH=12h/BH=0Ah, except that DESQview will
  2753.       not pop up a "Programming Error" window, instead returning an error
  2754.       code in AL (see AH=12h/BH=80h)
  2755. SeeAlso: AH=12h/BH=0Ah
  2756. ----------1512--BH8B-------------------------
  2757. INT 15 - DESQview v2.50+ - SEND MESSAGE WITH ERROR RECOVERY
  2758.     AH = 12h
  2759.     BH = 8Bh
  2760. Note:    this function is identical to AH=12h/BH=0Bh, except that DESQview will
  2761.       not pop up a "Programming Error" window, instead returning an error
  2762.       code in AL (see AH=12h/BH=80h)
  2763. SeeAlso: AH=12h/BH=0Bh
  2764. ----------1512--BH8C-------------------------
  2765. INT 15 - DESQview v2.50+ - SEND MESSAGE WITH ERROR RECOVERY
  2766.     AH = 12h
  2767.     BH = 8Ch
  2768. Note:    this function is identical to AH=12h/BH=0Ch, except that DESQview will
  2769.       not pop up a "Programming Error" window, instead returning an error
  2770.       code in AL (see AH=12h/BH=80h)
  2771. SeeAlso: AH=12h/BH=0Ch
  2772. ----------1512--BH8D-------------------------
  2773. INT 15 - DESQview v2.50+ - SEND MESSAGE WITH ERROR RECOVERY
  2774.     AH = 12h
  2775.     BH = 8Dh
  2776. Note:    this function is identical to AH=12h/BH=0Dh, except that DESQview will
  2777.       not pop up a "Programming Error" window, instead returning an error
  2778.       code in AL (see AH=12h/BH=80h)
  2779. SeeAlso: AH=12h/BH=0Dh
  2780. ----------1512--BH8E-------------------------
  2781. INT 15 - DESQview v2.50+ - SEND MESSAGE WITH ERROR RECOVERY
  2782.     AH = 12h
  2783.     BH = 8Eh
  2784. Note:    this function is identical to AH=12h/BH=0Eh, except that DESQview will
  2785.       not pop up a "Programming Error" window, instead returning an error
  2786.       code in AL (see AH=12h/BH=80h)
  2787. SeeAlso: AH=12h/BH=0Eh
  2788. ----------1512--BH8F-------------------------
  2789. INT 15 - DESQview v2.50+ - SEND MESSAGE WITH ERROR RECOVERY
  2790.     AH = 12h
  2791.     BH = 8Fh
  2792. Note:    this function is identical to AH=12h/BH=0Fh, except that DESQview will
  2793.       not pop up a "Programming Error" window, instead returning an error
  2794.       code in AL (see AH=12h/BH=80h)
  2795. SeeAlso: AH=12h/BH=0Fh
  2796. ----------1512--BH90-------------------------
  2797. INT 15 - DESQview v2.50+ - SEND MESSAGE WITH ERROR RECOVERY
  2798.     AH = 12h
  2799.     BH = 90h
  2800. Note:    this function is identical to AH=12h/BH=10h, except that DESQview will
  2801.       not pop up a "Programming Error" window, instead returning an error
  2802.       code in AL (see AH=12h/BH=80h)
  2803. SeeAlso: AH=12h/BH=10h
  2804. ----------1512--BH91-------------------------
  2805. INT 15 - DESQview v2.50+ - SEND MESSAGE WITH ERROR RECOVERY
  2806.     AH = 12h
  2807.     BH = 91h
  2808. Note:    this function is identical to AH=12h/BH=11h, except that DESQview will
  2809.       not pop up a "Programming Error" window, instead returning an error
  2810.       code in AL (see AH=12h/BH=80h)
  2811. SeeAlso: AH=12h/BH=11h,AH=12h/BX=1100h
  2812. ----------1512--BH92-------------------------
  2813. INT 15 - DESQview v2.50+ - SEND MESSAGE WITH ERROR RECOVERY
  2814.     AH = 12h
  2815.     BH = 92h
  2816. Note:    this function is identical to AH=12h/BH=12h, except that DESQview will
  2817.       not pop up a "Programming Error" window, instead returning an error
  2818.       code in AL (see AH=12h/BH=80h)
  2819. SeeAlso: AH=12h/BH=12h,AH=12h/BX=1200h
  2820. ----------1512--BH93-------------------------
  2821. INT 15 - DESQview v2.50+ - SEND MESSAGE WITH ERROR RECOVERY
  2822.     AH = 12h
  2823.     BH = 93h
  2824. Note:    this function is identical to AH=12h/BH=13h, except that DESQview will
  2825.       not pop up a "Programming Error" window, instead returning an error
  2826.       code in AL (see AH=12h/BH=80h)
  2827. SeeAlso: AH=12h/BH=13h
  2828. ----------1512--BH94-------------------------
  2829. INT 15 - DESQview v2.50+ - SEND MESSAGE WITH ERROR RECOVERY
  2830.     AH = 12h
  2831.     BH = 94h
  2832. Note:    this function is identical to AH=12h/BH=14h, except that DESQview will
  2833.       not pop up a "Programming Error" window, instead returning an error
  2834.       code in AL (see AH=12h/BH=80h)
  2835. SeeAlso: AH=12h/BH=14h
  2836. ----------1512--BH95-------------------------
  2837. INT 15 - DESQview v2.50+ - SEND MESSAGE WITH ERROR RECOVERY
  2838.     AH = 12h
  2839.     BH = 95h
  2840. Note:    this function is identical to AH=12h/BH=15h, except that DESQview will
  2841.       not pop up a "Programming Error" window, instead returning an error
  2842.       code in AL (see AH=12h/BH=80h)
  2843. SeeAlso: AH=12h/BH=15h
  2844. ----------1512--BH96-------------------------
  2845. INT 15 - DESQview v2.50+ - SEND MESSAGE WITH ERROR RECOVERY
  2846.     AH = 12h
  2847.     BH = 96h
  2848. Note:    this function is identical to AH=12h/BH=16h, except that DESQview will
  2849.       not pop up a "Programming Error" window, instead returning an error
  2850.       code in AL (see AH=12h/BH=80h)
  2851. SeeAlso: AH=12h/BH=16h
  2852. ----------1513-------------------------------
  2853. INT 15 - VMiX - "sys_wake" - WAKE SLEEPING PROCESS
  2854.     AH = 13h
  2855.     STACK:    WORD    process ID
  2856. Return: AX = status (SYS_OK or SYS_ERROR)
  2857. SeeAlso: AH=12h"VMiX"
  2858. ----------1513-------------------------------
  2859. INT 15 - MultiDOS Plus - GET TASK CONTROL BLOCK
  2860.     AH = 13h
  2861. Return: BX:AX -> task control block (see below)
  2862. SeeAlso: AH=15h"MultiDOS"
  2863.  
  2864. Format of MultiDOS Plus v4.0 task control block:
  2865. Offset    Size    Description
  2866.  00h    DWORD    pointer to next TCB
  2867.  04h  8 BYTEs    ASCIZ task name
  2868.  0Ch  2 BYTEs    ???
  2869.  0Eh    WORD    task PSP segment
  2870.  10h    WORD    abort/suspend flags
  2871.  12h    WORD    current screen segment (see AH=0Bh,AH=0Ch)
  2872.  14h    WORD    priority level (0000h-FFFEh)
  2873.  16h    WORD    time slice counter
  2874.  18h  2 BYTEs    ???
  2875.  1Ah    WORD    suspend timer value
  2876.  1Ch    WORD    stack segment
  2877.  1Eh    WORD    stack pointer
  2878.  20h    WORD    display type
  2879.  22h    WORD    display memory
  2880.  24h  2 BYTEs    ???
  2881.  26h    WORD    termination count
  2882.  28h    WORD    equipment flag for BIO10 driver
  2883.  2Ah    BYTE    background CRT mode
  2884.  2Bh    WORD    screen width in columns
  2885.  2Dh    WORD    screen size in bytes
  2886.  2Fh    WORD    segment of physical screen memory
  2887.  31h 16 BYTEs    eight cursor positions
  2888.  41h    WORD    current cursor shape
  2889.  43h    BYTE    active display page
  2890.  44h    WORD    CRT controller I/O port base
  2891.  46h  2 BYTEs    ???
  2892.  48h    WORD    foreground task flag
  2893.  4Ah  6 BYTEs    ???
  2894.  50h    WORD    saved video segment (see AH=0Bh,AH=0Ch)
  2895.  52h    DWORD    old INT 22
  2896.  56h    DWORD    old INT 23
  2897.  5Ah    DWORD    old INT 24
  2898.  5Eh    WORD    top of memory for task
  2899.  60h  4 BYTEs    ???
  2900.  64h    WORD    DTA segment (see INT 21/AH=1Ah)
  2901.  66h    WORD    DTA offset
  2902.  68h  4 BYTEs    ???
  2903.  6Ch    BYTE    current ANSI.SYS attribute
  2904.  6Dh    BYTE    current ANSI.SYS column
  2905.  6Eh    BYTE    current ANSI.SYS row
  2906.  6Fh    BYTE    current ANSI.SYS display state
  2907.  70h    BYTE    maximum ANSI.SYS columns
  2908.  71h    BYTE    current ANSI.SYS page
  2909.  72h    WORD    saved ANSI.SYS cursor position
  2910.  74h    BYTE    ANSI.SYS parameter buffer index
  2911.  75h    BYTE    current ANSI.SYS screen mode
  2912.  76h    BYTE    ANSI.SYS wrap flag
  2913.  77h  6 BYTEs    ANSI.SYS parameter buffer
  2914.  7Dh    BYTE    ANSI.SYS keyboard DSR state
  2915.  7Eh  7 BYTEs    ANSI.SYS keyboard DSR buffer
  2916.  85h  3 BYTEs    ???
  2917.  88h 16 BYTEs    request header for DOS driver calls
  2918.  98h 14 BYTEs    ???
  2919.  A6h    WORD    segment of EMS map if EMS task
  2920.  A8h    WORD    flag: task makes EMS calls
  2921.  AAh    WORD    EMS handle for task
  2922.  ACh    WORD    keyboard shift state
  2923.  AEh 12 BYTEs    ???
  2924.  BAh    WORD    TCB of parent if child task
  2925.  BCh    WORD    termination code
  2926.  BEh    WORD    COM port number
  2927.  C0h  4 BYTEs    ???
  2928.  C4h    WORD    current IRQ number
  2929.  C6h  2 BYTEs    ???
  2930.  C8h    WORD    miscellaneous flag word
  2931.  CAh  2 BYTEs    ???
  2932.  CCh    DWORD    old INT 10
  2933.  D0h    WORD    EMS alternate map set number
  2934.  D2h 414 BYTEs    DOS current disk and directory context (optional)
  2935. ----------1514-------------------------------
  2936. INT 15 - VMiX - "sys_clrwindow" - CLEAR WINDOW
  2937.     AH = 14h
  2938.     STACK:    WORD    top left corner of window (high byte = row, low = col)
  2939.         WORD    bottom right corner of window (high = row, low = col)
  2940. Return: AX = status (SYS_OK)
  2941. Note:    clears window to color set with "sys_setcolors" (AH=18h)
  2942. SeeAlso: AH=15h"VMiX",AH=16h"VMiX",AH=18h"VMiX",AH=1Fh"VMiX"
  2943. ----------1514-------------------------------
  2944. INT 15 - MultiDOS Plus - CHECK IF MultiDOS FOREGROUND OR BACKGROUND
  2945.     AH = 14h
  2946. Return: AX = current state
  2947.         0000h MultiDOS Plus command prompt is background task
  2948.         0001h command prompt is foreground task
  2949. SeeAlso: AH=0Bh"MultiDOS"
  2950. ----------1515-------------------------------
  2951. INT 15 - VMiX - "sys_setbwindow" - SET BANNER WINDOW MESSAGE
  2952.     AH = 15h
  2953.     STACK:    DWORD    pointer to ASCIZ banner    message for top of screen
  2954. Return: AX = status (SYS_OK)
  2955. SeeAlso: AH=14h"VMiX",AH=16h"VMiX"
  2956. ----------1515-------------------------------
  2957. INT 15 - MultiDOS Plus - GET SYSTEM BLOCK
  2958.     AH = 15h
  2959. Return: BX:AX -> system block (see below)
  2960. SeeAlso: AH=13h"MultiDOS"
  2961.  
  2962. Format of MultiDOS Plus 4.0 system block:
  2963. Offset    Size    Description
  2964.  00h    WORD    segment of system control block
  2965.  02h    WORD    redirection flag set by /NOREDIRECT
  2966.  04h    WORD    no-INT 10 flag set by /NO10
  2967.  06h    DWORD    old INT 10
  2968.  0Ah    DWORD    new INT 10
  2969.  0Eh    DWORD    pointer to WORD with current TCB offset (see AH=13h)
  2970.  12h    DWORD    pointer to WORD with idle task TCB offset
  2971.  16h    DWORD    pointer to WORD with foreground TCB offset
  2972.  1Ah    DWORD    pointer to WORD with MultiDOS TCB offset
  2973.  1Eh    WORD    Task Control Block size
  2974.  20h    WORD    number of TCBs
  2975.  22h    WORD    flag: EMS present
  2976.  24h    WORD    EMS page frame base segment
  2977.  26h    WORD    16K pages in EMS page frame
  2978.  28h    WORD    base segment for conventional memory tasks
  2979.  2Ah    WORD    conventional memory size in paragraphs
  2980.  2Ch    DWORD    pointer to list of queue pointers
  2981. ----------1516-------------------------------
  2982. INT 15 - VMiX - "sys_setwindow" - SET ROOT WINDOW SIZE AND HOME CURSOR
  2983.     AH = 16h
  2984.     STACK:    DWORD    pointer to I/O Request Packet
  2985.         WORD    top left corner of window (high byte = row, low = col)
  2986.         WORD    bottom right corner of window (high = row, low = col)
  2987. Return: AX = status (SYS_OK or SYS_ERROR)
  2988. SeeAlso: AH=14h"VMiX",AH=17h"VMiX"
  2989. ----------1516-------------------------------
  2990. INT 15 - MultiDOS Plus - INITIALIZATION
  2991.     AH = 16h
  2992. Note:    used internally during initialization; any other calls will cause
  2993.       unpredicatable results
  2994. ----------1517-------------------------------
  2995. INT 15 - VMiX - "sys_getcolors" - GET CONSOLE WINDOW COLORS
  2996.     AH = 17h
  2997. Return: AH = foreground color
  2998.     AL = background color
  2999. SeeAlso: AH=16h"VMiX",AH=18h"VMiX"
  3000. ----------1517-------------------------------
  3001. INT 15 - MultiDOS Plus - MAP IRQ
  3002.     AH = 17h
  3003.     AL = IRQ to map (01h-0Fh)
  3004.     BX = offset of task control block (see AH=13h) to associate with IRQ
  3005. Return: AX = status
  3006.         0000h successful
  3007.         other invalid IRQ
  3008. Note:    the EMS map of the specified TCB is associated with the given interrupt
  3009. SeeAlso: AH=18h"MultiDOS",AH=19h"MultiDOS"
  3010. ----------1518-------------------------------
  3011. INT 15 - VMiX - "sys_setcolors" - SET CONSOLE COLORS
  3012.     AH = 18h
  3013.     STACK:    WORD    new background/foreground colors
  3014.             bits 3-0: foreground
  3015.             bits 7-4: background
  3016.             bits 15-8: unused
  3017. Return: AX = color
  3018. SeeAlso: AH=14h"VMiX",AH=17h"VMiX",AH=19h"VMiX"
  3019. ----------1518-------------------------------
  3020. INT 15 - MultiDOS Plus - UNMAP IRQ
  3021.     AH = 18h
  3022.     AL = IRQ to unmap (01h-0Fh)
  3023. Return: AX = status
  3024.         0000h successful
  3025.         0001h invalid IRQ
  3026. Note:    results are unpredictable if the IRQ has not been mapped
  3027. SeeAlso: AH=17h"MultiDOS",AH=19h"MultiDOS"
  3028. ----------1519-------------------------------
  3029. INT 15 - VMiX v2+ - "sys_setconwn" - SET WINDOW COLORS
  3030.     AH = 19h
  3031.     STACK:    WORD    new background/foreground colors
  3032.             bits 3-0: foreground
  3033.             bits 7-4: background
  3034.             bits 15-8: unused
  3035. Return: AX = color
  3036. SeeAlso: AH=18h"VMiX"
  3037. ----------1519-------------------------------
  3038. INT 15 - MultiDOS Plus - UNMAP ALL IRQs
  3039.     AH = 19h
  3040. Return: AX destroyed
  3041. Note:    for MultiDOS internal use only
  3042. SeeAlso: AH=17h"MultiDOS",AH=18h"MultiDOS"
  3043. ----------151A-------------------------------
  3044. INT 15 - VMiX v2+ - "sys_sint" - INVOKE SOFTWARE INTERRUPT
  3045.     AH = 1Ah
  3046.     STACK:    WORD    interrupt number
  3047.         DWORD    pointer to register structure
  3048. Return: AX = returned flags
  3049. ----------151A-------------------------------
  3050. INT 15 - MultiDOS Plus - MAP SEMAPHORE NAME TO NUMBER
  3051.     AH = 1Ah
  3052.     DS:SI -> 8-byte name
  3053. Return: AL = status
  3054.         00h successful
  3055.         AH = semaphore number (20h-3Fh)
  3056.         04h out of string space
  3057. Notes:    all eight bytes of the name are significant
  3058.     if the name does not already exist, it is added to the name table and
  3059.       associated with a free semaphore number
  3060.     names cannot be destroyed
  3061. SeeAlso: AH=1Bh"MultiDOS",AH=1Ch"MultiDOS",AH=1Dh"MultiDOS"
  3062. ----------151B-------------------------------
  3063. INT 15 - VMiX v2+ - "sys_blkmov" - MOVE MEMORY BLOCK
  3064.     AH = 1Bh
  3065.     STACK:    DWORD    source address
  3066.         DWORD    destination address
  3067.         WORD    number of words to move
  3068. Return: nothing
  3069. ----------151B-------------------------------
  3070. INT 15 - MultiDOS Plus - REQUEST RESOURCE SEMAPHORE BY NAME
  3071.     AH = 1Bh
  3072.     DS:SI -> 8-byte name
  3073. Return: AH = status
  3074.         00h successful
  3075.         02h invalid semaphore number
  3076.         03h caller already owns semaphore
  3077.         04h out of string space
  3078. Notes:    (see AH=01h"MultiDOS")
  3079.     equivalent to AH=1Ah followed by AH=01h
  3080. SeeAlso: AH=01h"MultiDOS",AH=1Ah"MultiDOS",AH=1Ch"MultiDOS",AH=1Dh"MultiDOS"
  3081. ----------151C-------------------------------
  3082. INT 15 - VMiX v2+ - "sys_bitblt" - PUT GRAPHICAL OBJECT AT CURSOR POSITION
  3083.     AH = 1Ch
  3084.     STACK:    WORD    AND/OR pixel with background (00h = OR, 01h = AND)
  3085.         DWORD    pointer to object bitmap
  3086.         WORD    object width in pixels
  3087.         WORD    object height in pixels
  3088. Return: nothing
  3089. SeeAlso: AH=1Dh"VMiX"
  3090. ----------151C-------------------------------
  3091. INT 15 - MultiDOS Plus - RELEASE RESOURCE SEMAPHORE BY NAME
  3092.     AH = 1Ch
  3093.     DS:SI -> 8-byte name
  3094. Return: AH = status
  3095.         00h successful
  3096.         01h not semaphore owner
  3097.         02h invalid semaphore number
  3098.         04h out of string space
  3099. Notes:    (see AH=02h"MultiDOS")
  3100.     equivalent to AH=1Ah followed by AH=02h
  3101. SeeAlso: AH=02h"MultiDOS",AH=1Ah"MultiDOS",AH=1Bh"MultiDOS",AH=1Dh"MultiDOS"
  3102. ----------151D-------------------------------
  3103. INT 15 - VMiX v2+ - "sys_getfont" - GET CURRENT CONSOLE GRAPHICS FONT
  3104.     AH = 1Dh
  3105. Return: AX = current font number (00h-03h)
  3106. SeeAlso: AH=1Ch"VMiX",AH=1Eh"VMiX"
  3107. ----------151D-------------------------------
  3108. INT 15 - MultiDOS Plus - TEST RESOURCE SEMAPHORE BY NAME
  3109.     AH = 1Dh
  3110.     DS:SI -> 8-byte name
  3111. Return; AH = status
  3112.         00h semaphore not in use
  3113.         01h semaphore owned by another task
  3114.         02h invalid semaphore number
  3115.         03h caller owns semaphore
  3116.         04h out of string space
  3117. Notes:    (see AH=10h"MultiDOS")
  3118.     equivalent to AH=1Ah followed by AH=10h
  3119. SeeAlso: AH=10h"MultiDOS",AH=1Ah"MultiDOS",AH=1Bh"MultiDOS",AH=1Ch"MultiDOS"
  3120. ----------151E-------------------------------
  3121. INT 15 - VMiX v2+ - "sys_setfont" - SET CONSOLE GRAPHICS FONT
  3122.     AH = 1Eh
  3123.     STACK: WORD new font number (00h-03h)
  3124. Return: AX = current font number (00h-03h)
  3125. SeeAlso: AH=1Dh"VMiX"
  3126. ----------151E00-----------------------------
  3127. INT 15 - MultiDOS Plus - CLEAR EVENT COUNTER
  3128.     AX = 1E00h
  3129.     DX = event/trigger number (00h-3Fh)
  3130. Return: AH = status
  3131.         00h successful
  3132. SeeAlso: AX=1E01h,AX=1E02h
  3133. ----------151E01-----------------------------
  3134. INT 15 - MultiDOS Plus - TRIGGER EVENT
  3135.     AX = 1E01h
  3136.     DX = event/trigger number (00h-3Fh)
  3137. Return: AH = status
  3138.         00h successful
  3139.         01h invalid event/trigger number
  3140. Notes:    schedules any task waiting for event; if no task is waiting, the event
  3141.       counter is incremented (and will roll over if it was 65535)
  3142.     may be invoked by interrupt handler
  3143. SeeAlso: AX=1E00h,AX=1E02h
  3144. ----------151E02-----------------------------
  3145. INT 15 - MultiDOS Plus - WAIT FOR EVENT
  3146.     AX = 1E02h
  3147.     DX = event/trigger number (00h-3Fh)
  3148. Return: AH = status
  3149.         00h successful
  3150.         01h invalid event/trigger number
  3151. Note:    if the event counter is zero, the task is suspended until the event is
  3152.       triggered with AX=1E01h; else, the counter is decremented and the
  3153.       call returns immediately
  3154. SeeAlso: AX=1E00h,AX=1E01h
  3155. ----------151F-------------------------------
  3156. INT 15 - VMiX v2.???+ - "sys_scrollwin" - SCROLL WINDOW
  3157.     AH = 1Fh
  3158.     STACK:    WORD    top left corner of window (high byte = row, low = col)
  3159.         WORD    bottom right corner of window
  3160. Return: AX = status (SYS_OK)
  3161. SeeAlso: AH=14h"VMiX",AH=18h"VMiX"
  3162. ----------151F-------------------------------
  3163. INT 15 - MultiDOS Plus v4.01 - GET MEMORY PARAMETERS
  3164.     AH = 1Fh
  3165. Return: BX = first segment of conventional memory
  3166.     DX = first segment of EMS swap frame into which MultiDOS will load
  3167.         programs
  3168. ----------1520-------------------------------
  3169. INT 15 - MultiDOS Plus v4.01 - CHECK IF MULTITASKING ENABLED
  3170.     AH = 20h
  3171. Return: AX = current state
  3172.         0000h multitasking enabled
  3173.         other TCB of task that disabled multitasking
  3174. SeeAlso: AH=0Dh"MultiDOS",AH=13h"MultiDOS"
  3175. ----------152000-----------------------------
  3176. INT 15 - DOS 3+ PRINT.COM - DISABLE CRITICAL REGION FLAG
  3177.     AX = 2000h
  3178. SeeAlso: AX=2001h
  3179. ----------152001-----------------------------
  3180. INT 15 - DOS 3+ PRINT.COM - SET CRITICAL REGION FLAG
  3181.     AX = 2001h
  3182.     ES:BX -> byte which is to be incremented while in a DOS call
  3183. SeeAlso: AX=2000h
  3184. ----------152010-----------------------------
  3185. INT 15 - OS HOOK - SETUP SYSREQ ROUTINE (AT,XT286,PS50+)
  3186.     AX = 2010h
  3187.     ???
  3188. Return: ???
  3189. SeeAlso: AX=2011h
  3190. ----------152011-----------------------------
  3191. INT 15 - OS HOOK - COMPLETION OF SYSREQ FUNCTION (AT,XT286,PS50+)
  3192.     AX = 2011h
  3193.     ???
  3194. Return: ???
  3195. SeeAlso: AX=2010h
  3196. ----------1521-------------------------------
  3197. INT 15 - SYSTEM - POWER-ON SELF-TEST ERROR LOG (PS50+)
  3198.     AH = 21h
  3199.     AL = subfunction
  3200.         00h read POST log
  3201.         01h write POST log
  3202.         BH = device ID
  3203.         BL = error code
  3204. Return: CF set on error
  3205.     AH = status (00h OK, 01h list full, 80h invalid cmd, 86h unsupported)
  3206.     if function 00h:
  3207.        BX = number of error codes stored
  3208.        ES:DI -> error log
  3209. Note:    the log is a series of words, the first byte of which identifies the
  3210.       error code and the second the device.
  3211. ----------1522-------------------------------
  3212. INT 15 U - SYSTEM - LOCATE ROM BASIC (later PS/2's only)
  3213.     AH = 22h
  3214. Return: CF set on error
  3215.         AH = status
  3216.     CF clear on success:
  3217.         ES -> segment of ROM BASIC
  3218. ----------152400-----------------------------
  3219. INT 15 - Qualitas 386MAX v6.01 - TURN ON ???
  3220.     AX = 2400h
  3221. Return: CF clear
  3222.     AH = 00h
  3223. SeeAlso: AX=2401h,AX=2402h
  3224. ----------152401-----------------------------
  3225. INT 15 - Qualitas 386MAX v6.01 - TURN OFF ???
  3226.     AX = 2401h
  3227. Return: CF clear
  3228.     AH = 00h
  3229. SeeAlso: AX=2400h,AX=2402h
  3230. ----------152402-----------------------------
  3231. INT 15 - Qualitas 386MAX v6.01 - GET STATE OF ???
  3232.     AX = 2402h
  3233. Return: CF clear
  3234.     AH = 00h
  3235.     AL = current state (00h off, 01h on)
  3236. SeeAlso: AX=2400h,AX=2401h
  3237. ----------152403-----------------------------
  3238. INT 15 - Qualitas 386MAX v6.01 - GET ???
  3239.     AX = 2403h
  3240.     ???
  3241. Return: CF clear
  3242.     AH = 00h
  3243.     BX = bit flags???
  3244.         bit 0: ???
  3245.         bit 1: ???
  3246. Note:    reportedly also used by some PS/2 models
  3247. ----------1540-------------------------------
  3248. INT 15 - SYSTEM - READ/MODIFY PROFILES (CONVERTIBLE)
  3249.     AH = 40h
  3250.     AL = subfunction
  3251.         00h get system profile in CX and BX
  3252.         01h set system profile from CX and BX
  3253.         02h get internal modem profile in BX
  3254.         03h set internal modem profile from BX
  3255. ----------154000-----------------------------
  3256. INT 15 - Compaq SLT/286 or Portable 386 - READ LCD/PLASMA TIMEOUT
  3257.     AX = 4000h
  3258. Return: AX = 4000h
  3259.     CL = 00h timeout disabled
  3260.        else timeout in minutes
  3261. SeeAlso: AX=4001h,AX=4600h
  3262. ----------154001CL00-------------------------
  3263. INT 15 - Compaq SLT/286 or Portable 386 - SET LCD/PLASMA TIMEOUT
  3264.     AX = 4001h
  3265.     CL = 00h timeout disabled
  3266.        else     timeout in minutes
  3267. Return: AL = 00h timeout modified
  3268.          01h timeout cannot be modified
  3269.          40h timeout cannot be modified
  3270.     CL = 00h timeout disabled
  3271.        else timeout in minutes
  3272. SeeAlso: AX=4000h,AX=4601h
  3273. ----------1541-------------------------------
  3274. INT 15 - SYSTEM - WAIT ON EXTERNAL EVENT (CONVERTIBLE)
  3275.     AH = 41h
  3276.     AL = condition type
  3277.         bits 0-2: condition to wait for
  3278.              0 any external event
  3279.              1 compare and return if equal
  3280.              2 compare and return if not equal
  3281.              3 test and return if not zero
  3282.              4 test and return if zero
  3283.         bit 3:    reserved
  3284.         bit 4:    1=port address, 0=user byte
  3285.         bits 5-7: reserved
  3286.     BH = condition compare or mask value
  3287.     BL = timeout value times 55 milliseconds
  3288.         00h means no timeout
  3289.     DX = I/O port address if AL bit 4 set
  3290.     ES:DI -> user byte if AL bit 4 clear
  3291. ----------1542-------------------------------
  3292. INT 15 - SYSTEM - REQUEST POWER OFF (CONVERTIBLE,HP 95LX)
  3293.     AH = 42h
  3294.     AL = 00h to use system profile
  3295.          01h to force suspend regardless of system profile
  3296. Note:    the HP 95LX apparently suspends regardless of the value in AL; on
  3297.       power-up, execution will resume following the instruction calling
  3298.       this function
  3299. SeeAlso: AH=44h
  3300. ----------154280-----------------------------
  3301. INT 15 - Compaq SLT/286 - ENTER STANDBY
  3302.     AX = 4280h
  3303. Return: AH = 42h
  3304.     CF clear if successful
  3305.     CF set if unable to enter standby
  3306. SeeAlso: AX=4600h,AX=5307h/BX=0001h/CX=0001h
  3307. ----------1543-------------------------------
  3308. INT 15 - SYSTEM - READ SYSTEM STATUS (CONVERTIBLE)
  3309.     AH = 43h
  3310. Return: AL = status bits
  3311.         bit 0: LCD detached
  3312.         bit 1: reserved
  3313.         bit 2: RS232/parallel adapter powered on
  3314.         bit 3: internal modem powered on
  3315.         bit 4: power activated by alarm
  3316.         bit 5: standby power lost
  3317.         bit 6: external power in use
  3318.         bit 7: power low
  3319. ----------1544-------------------------------
  3320. INT 15 - SYSTEM - (DE)ACTIVATE INTERNAL MODEM POWER (CONVERTIBLE)
  3321.     AH = 44h
  3322.     AL = 00h to power off
  3323.          01h to power on
  3324. SeeAlso: AH=42h
  3325. ----------154600-----------------------------
  3326. INT 15 - Compaq SLT/286 - READ POWER CONSERVATION/MODEM CONFIGURATION
  3327.     AX = 4600h
  3328. Return: AH = modem configuration information
  3329.         bit 0 powerup state
  3330.             0 off
  3331.             1 on
  3332.         1 modem installed
  3333.         2 IRQ line assignment
  3334.             0 IRQ 4
  3335.             1 IRQ 3
  3336.         3 COM port assignment
  3337.             0 = COM 2
  3338.             1 = COM 1
  3339.         4 modem state
  3340.             0 not assigned
  3341.             1 assigned
  3342.         5 modem is on
  3343.     AL = power conservation status information
  3344.         bit 0  power source (0 internal, 1 external)
  3345.            1-2 low battery state
  3346.             00 no low battery condition
  3347.             01 low battery 1
  3348.             10 reserved
  3349.             11 low battery 2
  3350.            3-4 power conservation mode
  3351.             00 automatic
  3352.             01 on
  3353.             10 off
  3354.             11 reserved
  3355.     BH = default system inactivity timeout (1-21 minutes)
  3356.     BL = current system inactivity timeout (1-21 minutes)
  3357.     CH = default video display inactivity timeout (1-63 minutes)
  3358.     CL = current video display inactivity timeout (1-63 minutes)        
  3359.     DH = default fixed disk drive inactivity timeout (1-21 minutes)
  3360.     DL = current fixed disk drive inactivity timeout (1-21 minutes)
  3361. SeeAlso: AX=4280h,AX=4601h,INT 77
  3362. ----------154601-----------------------------
  3363. INT 15 - Compaq SLT/286 - Modify Power Conservation/Modem Configuration
  3364.     AX = 4601h
  3365.     BL = system inactivity timeout (1-21 minutes)
  3366.        = FFh do not change
  3367.     CL = video display inactivity timeout (1-63 minutes)        
  3368.        = FFh do not change
  3369.     DL = current fixed disk drive inactivity timeout (1-21 minutes)
  3370.        = FFh do not change
  3371.     DH = 00h turn modem OFF
  3372.        = 01h turn modem ON
  3373.        = FFh do not change modem state
  3374. Return: CF clear if successful
  3375.         AH = 00h
  3376.         BL = current system inactivity timeout (1-21 minutes)
  3377.         CL = current video display inactivity timeout (1-63 minutes)    
  3378.         DL = current fixed disk drive inactivity timeout (1-21 minutes)
  3379.         DH = FFh modem state unchanged
  3380.            = 00h modem turned OFF
  3381.            = 01h modem turned ON
  3382.     CF set on error
  3383.         AH = 01h input is out of range
  3384.            = 02h - No modem present
  3385. SeeAlso: AX=4600h,INT 77
  3386. ----------154900-----------------------------
  3387. INT 15 - Far East MSDOS - GET DOS TYPE
  3388.     AX = 4900h
  3389. Return: CF clear if successful
  3390.         AH = 00h
  3391.         BL = type of DOS running
  3392.         00h DOS/V
  3393.         01h DOS/J or DOS/K (early IBM Japan versions of MSDOS)
  3394.     CF set on error
  3395.         AH = 86h (function not supported)
  3396. Note:    in practice, DOS/J returns AH=86h; AX DOS does not support this call
  3397. SeeAlso: INT 21/AH=30h
  3398. ----------154DD4-----------------------------
  3399. INT 15 - HP 95LX - INSTALLATION CHECK
  3400.     AX = 4DD4h
  3401. Return: BX = 4850h ("HP") if HP 95LX
  3402.         CX = ??? (0101h)
  3403.         DL = ??? (00h)
  3404. SeeAlso: INT 0B"HP 95LX",INT 0F"HP 95LX",INT 5F/AH=00h,INT 60/DI=0100h
  3405. SeeAlso: INT 61"HP 95LX"
  3406. ----------154E-------------------------------
  3407. INT 15 - HP 95LX - ENABLE/DISABLE LIGHT SLEEP
  3408.     AH = 4Eh
  3409.     AL = light sleep
  3410.         00h disabled
  3411.         01h enabled
  3412. Note:    when light sleep is disabled, the system will continue running at full
  3413.       speed; when enabled, it may automatically slow to conserve batteries
  3414. SeeAlso: INT 06"HP 95LX",INT 60/DI=0100h
  3415. ----------154F-------------------------------
  3416. INT 15 C - KEYBOARD - KEYBOARD INTERCEPT (AT model 3x9,XT2,XT286,CONV,PS)
  3417.     AH = 4Fh
  3418.     AL = hardware scan code
  3419.     CF set
  3420. Return: CF set
  3421.        AL = hardware scan code
  3422.     CF clear
  3423.        scan code should be ignored
  3424. Note:    called by INT 9 handler to translate scan codes; the INT 09 code does
  3425.       not examine the scan code it reads from the keyboard until after
  3426.       this function returns.  This permits software to rearrange the
  3427.       keyboard; for example, swapping the CapsLock and Control keys, or
  3428.       turning the right Shift key into Enter.
  3429. SeeAlso: INT 09,INT 15/AH=C0h
  3430. ----------1550-------------------------------
  3431. INT 15 - VMIX v2.???+ - "sys_vm_page" - SET NEW VIRTUAL PAGE TABLE
  3432.     AH = 50h
  3433.     BX = segment of page directory table
  3434.     CX = page number of page table
  3435. SeeAlso: AH=10h"VMiX",AH=51h"VMiX",AH=52h"VMiX"
  3436. ----------1551-------------------------------
  3437. INT 15 - VMiX v2.???+ - "sys_vm_func" - EXECUTE FUNCTION IN PROTECTED MODE
  3438.     AH = 51h
  3439.     STACK:    DWORD    selector:offset of function
  3440. Return: registers as returned by function
  3441. Note:    executes function with privilege level 0 (highest privilege)
  3442. SeeAlso: AH=10h"VMiX",AH=52h"VMiX"
  3443. ----------1552-------------------------------
  3444. INT 15 - VMiX v2.???+ - "sys_vm_init" - INITIALIZE PROTECTED-MODE ENVIRONMENT
  3445.     AH = 52h
  3446. SeeAlso: AH=50h"VMiX",AH=51h"VMiX"
  3447. ----------155300BX0000-----------------------
  3448. INT 15 - Advanced Power Management Specification - INSTALLATION CHECK
  3449.     AX = 5300h
  3450.     BX = 0000h (device ID of system BIOS)
  3451. Return: CF clear if successful
  3452.         AH = major version (BCD)
  3453.         AL = minor version (BCD)
  3454.         BX = 504Dh ("PM")
  3455.         CX = flags
  3456.         bit 0: 16-bit protected mode interface supported
  3457.         bit 1: 32-bit protected mode interface supported
  3458.         bit 2: CPU idle call reduces processor speed
  3459.         bit 3: BIOS power management disabled
  3460.         bits 4-7 reserved
  3461.     CF set on error
  3462.         AH = error code (86h) (see below)
  3463.  
  3464. Values for error code:
  3465.  01h    power management functionality disabled
  3466.  02h    interface connection already in effect
  3467.  03h    interface not connected
  3468.  04h    real-mode interface not connected
  3469.  05h    16-bit protected-mode interface already connected
  3470.  06h    16-bit protected-mode interface not supported
  3471.  07h    32-bit protected-mode interface already connected
  3472.  08h    32-bit protected-mode interface not supported
  3473.  09h    unrecognized device ID
  3474.  0Ah    invalid parameter value in CX
  3475.  0Bh-1Fh reserved for other interface and general errors
  3476.  20h-3Fh reserved for CPU errors
  3477.  40h-5Fh reserved for device errors
  3478.  60h    can't enter requested state
  3479.  61h-7Fh reserved for other system errors
  3480.  80h    no power management events pending
  3481.  81h-85h reserved for other power management event errors
  3482.  86h    APM not present
  3483.  87h-9Fh reserved for other power management event errors
  3484. ----------155301BX0000-----------------------
  3485. INT 15 - Advanced Power Management Specification - CONNECT REAL-MODE INTERFACE
  3486.     AX = 5301h
  3487.     BX = 0000h (device ID of system BIOS)
  3488. Return: CF clear if successful
  3489.     CF set on error
  3490.         AH = error code (02h,09h) (see AX=5300h)
  3491. SeeAlso: AX=5302h,AX=5303h,AX=5304h
  3492. ----------155302BX0000-----------------------
  3493. INT 15 R - Advanced Power Management Spec - CONNECT 16-BIT PROTMODE INTERFACE
  3494.     AX = 5302h
  3495.     BX = 0000h (device ID of system BIOS)
  3496. Return: CF clear if successful
  3497.         AX = real-mode segment base address of protected-mode 16-bit code
  3498.         segment
  3499.         BX = offset of entry point
  3500.         CX = real-mode segment base address of protected-mode 16-bit data
  3501.         segment
  3502.     CF set on error
  3503.         AH = error code (05h,06h,09h) (see AX=5300h)
  3504. Notes:    the caller must initialize two consecutive descriptors with the
  3505.       returned segment base addresses; these descriptors must be valid
  3506.       whenever the protected-mode interface is called, and will have
  3507.       their limits arbitrarily set to 64K.
  3508.     the protected mode interface is invoked by making a far call with the
  3509.       same register values as for INT 15; it must be invoked while CPL=0,
  3510.       the code segment descriptor must have a DPL of 0, the stack must be
  3511.       in a 16-bit segment and have enough room for BIOS use and possible
  3512.       interrupts, and the current I/O permission bit map must allow access
  3513.       to the I/O ports used for power management.
  3514.     functions 00h-03h are not available from protected mode
  3515. SeeAlso: AX=5301h,AX=5303h,AX=5304h
  3516. ----------155303BX0000-----------------------
  3517. INT 15 - Advanced Power Management Spec - CONNECT 32-BIT PROTMODE INTERFACE
  3518.     AX = 5303h
  3519.     BX = 0000h (device ID of system BIOS)
  3520. Return: CF clear if successful
  3521.         AX = real-mode segment base address of protected-mode 32-bit code
  3522.         segment
  3523.         EBX = offset of entry point
  3524.         CX = real-mode segment base address of protected-mode 16-bit code
  3525.         segment
  3526.         DX = real-mode segment base address of protected-mode 16-bit data
  3527.         segment
  3528.     CF set on error
  3529.         AH = error code (07h,08h,09h) (see AX=5300h)
  3530. Notes:    the caller must initialize three consecutive descriptors with the
  3531.       returned segment base addresses for 32-bit code, 16-bit code, and
  3532.       16-bit data, respectively; these descriptors must be valid whenever
  3533.       the protected-mode interface is called, and will have their limits
  3534.       arbitrarily set to 64K.
  3535.     the protected mode interface is invoked by making a far call to the
  3536.       32-bit code segment with the same register values as for INT 15; it
  3537.       must be invoked while CPL=0, the code segment descriptor must have a
  3538.       DPL of 0, the stack must be in a 32-bit segment and have enough room
  3539.       for BIOS use and possible interrupts, and the current I/O permission
  3540.       bit map must allow access to the I/O ports used for power management.
  3541.     functions 00h-03h are not available from protected mode
  3542. SeeAlso: AX=5301h,AX=5302h,AX=5304h
  3543. ----------155304BX0000-----------------------
  3544. INT 15 - Advanced Power Management Specification - DISCONNECT INTERFACE
  3545.     AX = 5304h
  3546.     BX = 0000h (device ID of system BIOS)
  3547. Return: CF clear if successful
  3548.     CF set on error
  3549.         AH = error code (03h,09h) (see AX=5300h)
  3550. SeeAlso: AX=5301h,AX=5302h,AX=5303h
  3551. ----------155305-----------------------------
  3552. INT 15 - Advanced Power Management Specification - CPU IDLE
  3553.     AX = 5305h
  3554. Return: after system leaves idle state
  3555.     CF clear
  3556. Notes:    call when the system is idle and should be suspended until the next
  3557.       system event or interrupt
  3558.     should not be called from within a hardware interrupt handler to avoid
  3559.       reentrance problems
  3560.     if an interrupt causes the system to resume normal processing, the
  3561.       interrupt may or may not have been handled when the BIOS returns
  3562.       from this call; thus, the caller should allow interrupts on return
  3563.     interrupt handlers may not retain control if the BIOS allows
  3564.       interrupts while in idle mode even if they are able to determine
  3565.       that they were called from idle mode
  3566.     the caller should issue this call continuously in a loop until it needs
  3567.       to perform some processing of its own
  3568. SeeAlso: AX=1000h,AX=5306h,INT 2F/AX=1680h
  3569. ----------155306-----------------------------
  3570. INT 15 - Advanced Power Management Specification - CPU BUSY
  3571.     AX = 5306h
  3572. Return: CF clear
  3573. Notes:    called to ensure that the system runs at full speed even on systems
  3574.       where the BIOS is unable to recognize increased activity (especially
  3575.       if interrupts are hooked by other programs and not chained to the
  3576.       BIOS)
  3577.     this call may be made even when the system is already running at full
  3578.       speed, but it will create unnecessary overhead
  3579.     should not be called from within a hardware interrupt handler to avoid
  3580.       reentrance problems
  3581. SeeAlso: AX=5305h
  3582. ----------155307-----------------------------
  3583. INT 15 - Advanced Power Management Specification - SET POWER STATE
  3584.     AX = 5307h
  3585.     BX = device ID (see below)
  3586.     CX = system state ID
  3587.         0000h ready (not supported for device ID 0001h)
  3588.         0001h stand-by
  3589.         0002h suspend
  3590.         0003h off (not supported for device ID 0001h)
  3591.         0004h-FFFFh reserved
  3592. Return: CF clear if successful
  3593.     CF set on error
  3594.         AH = error code (01h,09h,0Ah,60h) (see AX=5300h)
  3595. Note:    should not be called from within a hardware interrupt handler to avoid
  3596.       reentrance problems
  3597.  
  3598. Values for device IDs:
  3599.  0000h    system BIOS
  3600.  0001h    all devices for which the system BIOS manages power
  3601.  01xxh    display (01FFh for all attached display devices)
  3602.  02xxh    secondary storage (02FFh for all attached secondary storage devices)
  3603.  03xxh    parallel ports (03FFh for all attached parallel ports)
  3604.  04xxh    serial ports (04FFh for all attached serial ports)
  3605.  0500h-FFFFh reserved
  3606. ----------155307BX0001-----------------------
  3607. INT 15 - Advanced Power Management Specification - SYSTEM STAND-BY
  3608.     AX = 5307h
  3609.     BX = 0001h
  3610.     CX = 0001h
  3611. Return: CF clear
  3612. Notes:    puts the entire system into stand-by mode; normally called in response
  3613.       to a System Stand-by Request notification after any necessary
  3614.       processing, but may also be invoked at the caller's discretion
  3615.     should not be called from within a hardware interrupt handler to avoid
  3616.       reentrance problems
  3617.     the stand-by state is typically exited on an interrupt
  3618. SeeAlso: AX=4280h,AX=5307h/BX=0001h/CX=0002h,AX=530Bh
  3619. ----------155307BX0001-----------------------
  3620. INT 15 - Advanced Power Management Specification - SUSPEND SYSTEM
  3621.     AX = 5307h
  3622.     BX = 0001h
  3623.     CX = 0002h
  3624. Return: after system is resumed
  3625.     CF clear
  3626. Notes:    puts the entire system into a low-power suspended state; normally
  3627.       called in response to a Suspend System Request notification after
  3628.       any necessary processing, but may also be invoked at the caller's
  3629.       discretion
  3630.     should not be called from within a hardware interrupt handler to avoid
  3631.       reentrance problems
  3632.     the caller may need to update its date and time values because the
  3633.       system could have been suspended for a long period of time
  3634. SeeAlso: AX=5307h/BX=0001h/CX=0001h,AX=530Bh
  3635. ----------155308BXFFFF-----------------------
  3636. INT 15 - Advanced Power Management Spec - ENABLE/DISABLE POWER MANAGEMENT
  3637.     AX = 5308h
  3638.     BX = FFFFh
  3639.     CX = new state
  3640.         0000h disabled
  3641.         0001h enabled
  3642. Return: CF clear if successful
  3643.     CF set on error
  3644.         AH = error code (01h,09h,0Ah) (see AX=5300h)
  3645. Notes:    when power management is disabled, the system BIOS will not
  3646.       automatically power down devices, enter stand-by or suspended mode,
  3647.       or perform any power-saving actions in response to AX=5305h calls
  3648.     should not be called from within a hardware interrupt handler to avoid
  3649.       reentrance problems
  3650. SeeAlso: AX=5309h
  3651. ----------155309BXFFFF-----------------------
  3652. INT 15 - Advanced Power Management Specification - RESTORE POWER-ON DEFAULTS
  3653.     AX = 5309h
  3654.     BX = FFFFh
  3655. Return: CF clear if successful
  3656.     CF set on error
  3657.         AH = error code (09h) (see AX=5300h)
  3658. Note:    should not be called from within a hardware interrupt handler to avoid
  3659.       reentrance problems
  3660. SeeAlso: AX=5308h
  3661. ----------15530ABX0001-----------------------
  3662. INT 15 - Advanced Power Management Specification - GET POWER STATUS
  3663.     AX = 530Ah
  3664.     BX = 0001h
  3665. Return: CF clear if successful
  3666.         BH = AC line status
  3667.         00h off-line
  3668.         01h on-line
  3669.         FFh unknown
  3670.         other reserved
  3671.         BL = battery status
  3672.         00h high
  3673.         01h low
  3674.         02h critical
  3675.         03h charging
  3676.         FFh unknown
  3677.         other reserved
  3678.         CL = remaining battery life
  3679.         00h-64h (0-100) percentage of full charge
  3680.         FFh unknown
  3681.     CF set on error
  3682.         AH = error code (09h) (see AX=5300h)
  3683. Note:    should not be called from within a hardware interrupt handler to avoid
  3684.       reentrance problems
  3685. ----------15530B-----------------------------
  3686. INT 15 - Advanced Power Management Specification - GET POWER MANAGEMENT EVENT
  3687.     AX = 530Bh
  3688. Return: CF clear if successful
  3689.         BX = event code
  3690.         0001h system stand-by request
  3691.         0002h system suspend request
  3692.         0003h normal resume system notification
  3693.         0004h critical resume system notification
  3694.         0005h battery low notification
  3695.     CF set on error
  3696.         AH = error code (03h,80h) (see AX=5300h)
  3697. Notes:    although power management events are often asynchronous, notification
  3698.       will not be made until polled via this call to permit software to
  3699.       only receive event notification when it is prepared to process
  3700.       power management events; since these events are not very time-
  3701.       critical, it should be sufficient to poll once or twice per second
  3702.     the critical resume notification is made after the system resumes
  3703.       from an emergency suspension; normally, the system BIOS only notifies
  3704.       its partner that it wishes to suspend and relies on the partner to
  3705.       actually request the suspension, but no notification is made on an
  3706.       emergency suspension
  3707.     should not be called from within a hardware interrupt handler to avoid
  3708.       reentrance problems
  3709. SeeAlso: AX=5307h,AX=5307h/BX=0001h/CX=0001h,AX=5307h/BX=0001h/CX=0002h
  3710. ----------155400-----------------------------
  3711. INT 15 C - Omniview Multitasker - INSTALLATION NOTIFICATION
  3712.     AX = 5400h
  3713.     ES:BX -> device information tables
  3714.     DI:DX -> dispatcher entry point
  3715. Note:    called by OmniView to notify programs loaded before OmniView of state
  3716.       changes inside OmniView
  3717. SeeAlso: AX=5407h,INT 2F/AX=DE00h
  3718. ----------155401-----------------------------
  3719. INT 15 C - Omniview Multitasker - PROCESS CREATION
  3720.     AX = 5401h
  3721.     ES:BX = process handle
  3722. Note:    called by OmniView to notify programs loaded before OmniView of state
  3723.       changes inside OmniView
  3724. SeeAlso: AX=5402h,INT 2F/AX=DE04h
  3725. ----------155402-----------------------------
  3726. INT 15 C - Omniview Multitasker - PROCESS DESTRUCTION
  3727.     AX = 5402h
  3728.     ES:DX = process handle
  3729. Note:    called by OmniView to notify programs loaded before OmniView of state
  3730.       changes inside OmniView
  3731. SeeAlso: AX=5401h,INT 2F/AX=DE05h
  3732. ----------155403-----------------------------
  3733. INT 15 C - Omniview Multitasker - SAVE
  3734.     AX = 5403h
  3735.     ES:DX = process swapping out
  3736. Note:    called by OmniView to notify programs loaded before OmniView of state
  3737.       changes inside OmniView
  3738. SeeAlso: AX=5404h,INT 2F/AX=DE08h
  3739. ----------155404-----------------------------
  3740. INT 15 C - Omniview Multitasker - RESTORE
  3741.     AX = 5404h
  3742.     ES:DX = process swapping in
  3743. Note:    called by OmniView to notify programs loaded before OmniView of state
  3744.       changes inside OmniView
  3745. SeeAlso: AX=5403h,INT 2F/AX=DE09h
  3746. ----------155405-----------------------------
  3747. INT 15 C - Omniview Multitasker - SWITCHING TO BACKGROUND
  3748.     AX = 5405h
  3749.     ES:DX = process swapping in
  3750. Note:    called by OmniView to notify programs loaded before OmniView of state
  3751.       changes inside OmniView
  3752. SeeAlso: AX=5406h
  3753. ----------155406-----------------------------
  3754. INT 15 C - Omniview Multitasker - SWITCHING TO FOREGROUND
  3755.     AX = 5406h
  3756.     ES:DX = process swapping in
  3757. Note:    called by OmniView to notify programs loaded before OmniView of state
  3758.       changes inside OmniView
  3759. SeeAlso: AX=5405h
  3760. ----------155407-----------------------------
  3761. INT 15 C - Omniview Multitasker - EXIT NOTIFICATION
  3762.     AX = 5407h
  3763. Note:    called by OmniView to notify programs loaded before OmniView of state
  3764.       changes inside OmniView
  3765. SeeAlso: AX=5400h,INT 2F/AX=DE03h
  3766. ----------1580-------------------------------
  3767. INT 15 C - OS HOOK - DEVICE OPEN (AT,XT286,PS)
  3768.     AH = 80h
  3769.     BX = device ID
  3770.     CX = process ID
  3771.     CF clear
  3772. Return: CF clear if successful
  3773.         AH = 00h
  3774.     CF set on error
  3775.         AH = status
  3776.         80h invalid command (PC,PCjr)
  3777.         86h function not supported (XT)
  3778. Note:    this function should be hooked by a multitasker which wishes to keep
  3779.       track of device ownership; the default BIOS handler merely returns
  3780.       successfully
  3781. SeeAlso: AH=81h,AH=82h
  3782. ----------1581-------------------------------
  3783. INT 15 C - OS HOOK - DEVICE CLOSE
  3784.     AH = 81h
  3785.     BX = device ID
  3786.     CX = process ID
  3787.     CF clear
  3788. Return: CF clear if successful
  3789.         AH = 00h
  3790.     CF set on error
  3791.         AH = status (see AH=80h)
  3792. Note:    this function should be hooked by a multitasker which wishes to keep
  3793.       track of device ownership; the default BIOS handler merely returns
  3794.       successfully
  3795. SeeAlso: AH=80h,AH=82h
  3796. ----------1582-------------------------------
  3797. INT 15 C - OS HOOK - PROGRAM TERMINATION
  3798.     AH = 82h
  3799.     BX = process ID
  3800.     CF clear
  3801. Return: CF clear if successful
  3802.         AH = 00h
  3803.     CF set on error
  3804.         AH = status (see AH=80h)
  3805. Notes:    closes all devices opened by the given process ID with function 80h
  3806.     this function should be hooked by a multitasker which wishes to keep
  3807.       track of device ownership; the default BIOS handler merely returns
  3808.       successfully
  3809. SeeAlso: AH=80h,AH=81h
  3810. ----------1583-------------------------------
  3811. INT 15 - BIOS - SET EVENT WAIT INTERVAL (AT,PS50+)
  3812.     AH = 83h
  3813.     AL = subfunction
  3814.         00h set interval
  3815.         CX:DX = microseconds to delay
  3816.         ES:BX -> byte whose high bit is to be set at end of interval
  3817.         01h cancel wait interval
  3818. Return: CF set on error or function already busy
  3819.         AH = status
  3820.         80h invalid command (PC,PCjr)
  3821.         86h function not supported (XT and later)
  3822.     CF clear if successful
  3823. Note:    the resolution of the wait period is 977 microseconds on most systems
  3824.       because most BIOSes use the 1/1024 second fast interrupt from the AT
  3825.       real-time clock chip which is available on INT 70
  3826. SeeAlso: AH=86h,INT 70
  3827. ----------1584-------------------------------
  3828. INT 15 - BIOS - JOYSTICK SUPPORT (XT after 11/8/82,AT,XT286,PS)
  3829.     AH = 84h
  3830.     DX = subfunction
  3831.         0000h read joystick switches
  3832.         Return: AL bits 7-4 = switch settings
  3833.         0001h read positions of joysticks
  3834.         Return: AX = X position of joystick A
  3835.             BX = Y position of joystick A
  3836.             CX = X position of joystick B
  3837.             DX = Y position of joystick B
  3838. Return: CF set on error
  3839.         AH = status
  3840.         80h invalid command (PC,PCjr)
  3841.         86h function not supported (other)
  3842.     CF clear if successful
  3843. Notes:    if no game port is installed, subfunction 0000h returns AL=00h (all
  3844.       switches open) and subfunction 0001h returns AX=BX=CX=DX=0000h
  3845.     a 250kOhm joystick typically returns 0000h-01A0h
  3846. ----------1585-------------------------------
  3847. INT 15 C - OS HOOK - SysRq KEY ACTIVITY (AT,PS)
  3848.     AH = 85h
  3849.     AL = 00h SysRq key pressed
  3850.        = 01h SysRq key released
  3851.     CF clear
  3852. Return: CF clear if successful
  3853.         AH = 00h
  3854.     CF set on error
  3855.         AH = status (see AH=84h)
  3856. Notes:    called by keyboard decode routine
  3857.     the default handler simply returns successfully; programs which wish
  3858.       to monitor the SysRq key must hook this call
  3859. SeeAlso: INT 09
  3860. ----------1586-------------------------------
  3861. INT 15 - BIOS - WAIT (AT,PS)
  3862.     AH = 86h
  3863.     CX:DX = interval in microseconds
  3864. Return: CF clear if successful (wait interval elapsed)
  3865.     CF set on error or AH=83h wait already in progress
  3866.         AH = status (see AH=84h)
  3867. Note:    the resolution of the wait period is 977 microseconds on most systems
  3868.       because most BIOSes use the 1/1024 second fast interrupt from the AT
  3869.       real-time clock chip which is available on INT 70
  3870. SeeAlso: AH=83h,INT 70
  3871. ----------1587-------------------------------
  3872. INT 15 - SYSTEM - COPY EXTENDED MEMORY
  3873.     AH = 87h
  3874.     CX = number of words to copy (max 8000h)
  3875.     ES:SI -> global descriptor table
  3876. Return: CF set on error
  3877.     CF clear if successful
  3878.     AH = status
  3879.         00h source copied into destination
  3880.         01h parity error
  3881.         02h interrupt error
  3882.         03h address line 20 gating failed
  3883.         80h invalid command (PC,PCjr)
  3884.         86h unsupported function (XT,PS30)
  3885. Notes:    copy is done in protected mode with interrupts disabled
  3886.     this function is incompatible with the OS/2 compatibility box
  3887. SeeAlso: AH=88h,AH=89h
  3888.  
  3889. Format of global descriptor table:
  3890. Offset    Size    Description
  3891.  00h 16 BYTEs    zeros
  3892.  10h    WORD    source segment length in bytes (2*CX-1 or greater)
  3893.  12h  3 BYTEs    24-bit linear source address, low byte first
  3894.  15h    BYTE    source segment access rights (93h)
  3895.  16h    WORD    zero
  3896.  18h    WORD    destination segment length in bytes (2*CX-1 or greater)
  3897.  1Ah  3 BYTEs    24-bit linear destination address, low byte first
  3898.  1Dh    BYTE    destination segment access rights (93h)
  3899.  1Eh 18 BYTEs    zeros
  3900. ----------1588-------------------------------
  3901. INT 15 - SYSTEM - GET EXTENDED MEMORY SIZE (286+)
  3902.     AH = 88h
  3903. Return: CF clear if successful
  3904.         AX = number of contiguous KB starting at absolute address 100000h
  3905.     CF set on error
  3906.         AH = status
  3907.         80h invalid command (PC,PCjr)
  3908.         86h unsupported function (XT,PS30)
  3909. Note:    TSRs which wish to allocate extended memory to themselves often hook
  3910.       this call, and return a reduced memory size.    They are then free to
  3911.       use the memory between the new and old sizes at will.
  3912. SeeAlso: AH=87h
  3913. ----------1589-------------------------------
  3914. INT 15 - SYSTEM - SWITCH TO PROTECTED MODE
  3915.     AH = 89h
  3916.     BL = interrupt number of IRQ0 (IRQ1-7 use next 7 interrupts)
  3917.     BH = interrupt number of IRQ8 (IRQ9-F use next 7 interrupts)
  3918.     ES:SI -> GDT for protected mode
  3919.            offset 0h  null descriptor (initialize to zeros)
  3920.               8h  GDT descriptor
  3921.              10h  IDT descriptor
  3922.              18h  DS
  3923.              20h  ES
  3924.              28h  SS
  3925.              30h  CS
  3926.              38h  uninitialized, used to build descriptor for BIOS CS
  3927.     CX = offset into protected-mode CS to jump to
  3928. Return: CF set on error
  3929.        AH = FFh  error enabling address line 20
  3930.     CF clear if successful
  3931.        AH = 00h
  3932.        in protected mode at specified address
  3933. Note:    BL and BH must be multiples of 8
  3934. SeeAlso: AH=87h,AH=88h,INT 67/AX=DE0Ch
  3935. ----------1590-------------------------------
  3936. INT 15 - OS HOOK - DEVICE BUSY (AT,PS)
  3937.     AH = 90h
  3938.     AL = device type
  3939.         00h disk
  3940.         01h diskette
  3941.         02h keyboard
  3942.         03h PS/2 pointing device
  3943.         21h waiting for keyboard input (Phoenix BIOS)
  3944.         80h network
  3945.         FBh digital sound (Tandy)
  3946.         FCh disk reset (PS)
  3947.         FDh diskette motor start
  3948.         FEh printer
  3949.     ES:BX -> request block for type codes 80h through BFh
  3950.     CF clear
  3951. Return: CF set if wait time satisfied
  3952.     CF clear if driver must perform wait
  3953.         AH = 00h
  3954. Notes:    type codes are allocated as follows:
  3955.       00-7F non-reentrant devices; OS must arbitrate access
  3956.       80-BF reentrant devices; ES:BX points to a unique control block
  3957.       C0-FF wait-only calls, no complementary INT 15/AH=91h call
  3958.     floppy and hard disk BIOS code uses this call to implement a timeout;
  3959.       for device types 00h and 01h, a return of CF set means that the
  3960.       timeout expired before the disk responded.
  3961.     this function should be hooked by a multitasker to allow other tasks
  3962.       to execute while the BIOS is waiting for I/O completion; the default
  3963.       handler merely returns with AH=00h and CF clear
  3964. SeeAlso: AH=91h,INT 13/AH=00h,INT 17/AH=00h,INT 1A/AH=83h
  3965. ----------1591-------------------------------
  3966. INT 15 - OS HOOK - DEVICE POST (AT,PS)
  3967.     AH = 91h
  3968.     AL = device type (see AH=90h)
  3969.     ES:BX -> request block for type codes 80h through BFh
  3970.     CF clear
  3971. Return: AH = 00h
  3972. Note:    this function should be hooked by a multitasker to allow other tasks
  3973.       to execute while the BIOS is waiting for I/O completion; the default
  3974.       handler merely returns with AH=00h and CF clear
  3975. SeeAlso: AH=90h
  3976. ----------15BC-------------------------------
  3977. INT 15 - Phoenix 386 BIOS - DETERMINE CPU SPEED
  3978.     AH = BCh
  3979. Return: CF clear
  3980.     BYTE 0040h:00B0h set to ??? (43 on my 386/33)
  3981. Note:    reads system timer channel 0 twice, then does calculations on returned
  3982.       values
  3983. ----------15BF00-----------------------------
  3984. INT 15 - Rational Systems DOS/16M - ???
  3985.     AX = BF00h
  3986.     ???
  3987. Return: ???
  3988. Note:    under DESQview/X 1.02 DVDOS4GX.DVR, this call is identical to AX=BF02h
  3989. SeeAlso: AX=BF02h
  3990. ----------15BF01-----------------------------
  3991. INT 15 - Rational Systems DOS/16M - ???
  3992.     AX = BF01h
  3993.     ???
  3994. Return: ???
  3995. Notes:    under DESQview/X 1.02 DVDOS4GX.DVR, this call is identical to AX=BF02h
  3996.     called by DOS/4GW
  3997. SeeAlso: AX=BF00h,AX=BF02h
  3998. ----------15BF02DX0000-----------------------
  3999. INT 15 - Rational Systems DOS/16M - INSTALLATION CHECK
  4000.     AX = BF02h
  4001.     DX = 0000h
  4002. Return: DX = nonzero if installed
  4003.         DX:SI -> XBRK structure (see below)
  4004. Note:    this function is also supported by DOS/4G
  4005. SeeAlso: AX=BF01h,AX=BFDCh,AX=BFDEh/BX=0000h
  4006. SeeAlso: INT 21/AH=FFh/DH=0Eh,INT 2F/AH=A1h,INT 2F/AX=F100h,INT 2F/AX=FBA1h
  4007.  
  4008. Format of XBRK structure:
  4009. Offset    Size    Description
  4010.  00h    DWORD    linear address of first available byte
  4011.  04h    DWORD    linear address of last available byte + 1 ???
  4012.  08h    DWORD    real-mode address of XBRK structure???
  4013.  0Ch    DWORD    ???
  4014.  10h  2 BYTEs    ???
  4015.  12h    WORD    segment of ???
  4016.  14h  8 BYTEs    ???
  4017.  1Ch 512 BYTEs    protected-mode IDT
  4018. 21Ch  N BYTEs    protected-mode GDT
  4019. ----------15BF03-----------------------------
  4020. INT 15 - Rational Systems DOS/4GW - UNINSTALL???
  4021.     AX = BF03h
  4022.     BX = PSP segment of extender
  4023.     ???
  4024. Return: ???
  4025. Note:    if BX is not the PSP segment of the extender, it passes the call down
  4026.       the INT 15 chain; this allows nested instances of the extender
  4027. SeeAlso: AX=BF06h
  4028. ----------15BF04-----------------------------
  4029. INT 15 - Rational Systems DOS/4GW - ???
  4030.     AX = BF04h
  4031.     BX = PSP segment of extender
  4032. Return: nothing???
  4033. Notes:    if BX is not the PSP segment of the extender, it passes the call down
  4034.       the INT 15 chain; this allows nested instances of the extender
  4035.     grabs INT 2Fh and installs handlers for INT 2F/AX=1605h-1607h
  4036. SeeAlso: INT 2F/AX=1607h/BX=22C0h
  4037. ----------15BF05-----------------------------
  4038. INT 15 - Rational Systems DOS/4GW - INITIALIZE PROTECTED-MODE INTERFACE
  4039.     AX = BF05h
  4040.     BX = PSP segment of extender
  4041. Return: nothing???
  4042. Notes:    if BX is not the PSP segment of the extender, it passes the call down
  4043.       the INT 15 chain; this allows nested instances of the extender
  4044.     calls INT 67/AX=DE01h if ???
  4045. ----------15BF06-----------------------------
  4046. INT 15 - Rational Systems DOS/4GW - ???
  4047.     AX = BF06h
  4048.     BX = PSP segment of extender
  4049.     ???
  4050. Return: ???
  4051. Note:    if BX is not the PSP segment of the extender, it passes the call down
  4052.       the INT 15 chain; this allows nested instances of the extender
  4053. SeeAlso: AX=BF03h
  4054. ----------15BFDCDX0000-----------------------
  4055. INT 15 - Rational Systems DOS/4GW - INSTALLATION CHECK
  4056.     AX = BFDCh
  4057.     DX = 0000h
  4058.     SI = 0000h
  4059. Return: DX = nonzero if installed
  4060.         DX:SI -> XBRK structure (see AX=BF02h)
  4061. SeeAlso: AX=BF02h
  4062. ----------15BFDEBX0000-----------------------
  4063. INT 15 - DESQview/X - DVDOS4GX.DVR - INSTALLATION CHECK
  4064.     AX = BFDEh
  4065.     BX = 0000h
  4066. Return: AX = ??? (0003h)
  4067.     BX = FFFFh
  4068. SeeAlso: AX=BF02h
  4069. ----------15BFDEBX0001-----------------------
  4070. INT 15 - DESQview/X 1.02 - DVDOS4GX.DVR - GET PROCESS MANAGER NAME
  4071.     AX = BFDEh
  4072.     BX = 0001h
  4073. Return: BX = 0000h (success)
  4074.     CX:DX -> name of process manager executable
  4075. SeeAlso: AX=BFDEh/BX=0000h
  4076. ----------15BFDEBX0002-----------------------
  4077. INT 15 - DESQview/X 1.02 - DVDOS4GX.DVR - SET ???
  4078.     AX = BFDEh
  4079.     BX = 0002h
  4080.     CX:DX -> ???
  4081. Return: BX = 0000h (success)
  4082. SeeAlso: AX=BFDEh/BX=0000h,AX=BFDEh/BX=0003h
  4083. ----------15BFDEBX0003-----------------------
  4084. INT 15 - DESQview/X 1.02 - DVDOS4GX.DVR - GET ???
  4085.     AX = BFDEh
  4086.     BX = 0003h
  4087. Return: BX = 0000h (success)
  4088.     CX:DX -> ???
  4089. SeeAlso: AX=BFDEh/BX=0000h,AX=BFDEh/BX=0002h
  4090. ----------15BFDEBX0004-----------------------
  4091. INT 15 - DESQview/X 1.02 - DVDOS4GX.DVR - ???
  4092.     AX = BFDEh
  4093.     BX = 0004h
  4094.     CL = ???
  4095. Return: BX = 0000h (success)
  4096.     CX:DX -> XBRK structure (see AX=BF02h)
  4097. SeeAlso: AX=BFDEh/BX=0000h
  4098. ----------15BFDEBX0005-----------------------
  4099. INT 15 - DESQview/X 1.02 - DVDOS4GX.DVR - ???
  4100.     AX = BFDEh
  4101.     BX = 0005h
  4102.     CX = new value for ???
  4103. Return: BX = 0000h (success)
  4104.     AX = old value of ???
  4105.     DS:SI -> ??? (if AX nonzero on return)
  4106.     ES:DI -> ??? (if AX zero on return)
  4107. Note:    called by DOS4GW.EXE
  4108. SeeAlso: AX=BFDEh/BX=0000h
  4109. ----------15BFDEBX0006-----------------------
  4110. INT 15 - DESQview/X 1.02 - DVDOS4GX.DVR - GET ???
  4111.     AX = BFDEh
  4112.     BX = 0006h
  4113. Return: BX = 0000h (success)
  4114.     AH = interrupt number??? (BEh)
  4115.     CX:DX = ???
  4116. SeeAlso: AX=BFDEh/BX=0000h,AX=BFDEh/BX=0007h,INT BE"DESQview"
  4117. ----------15BFDEBX0007-----------------------
  4118. INT 15 - DESQview/X 1.02 - DVDOS4GX.DVR - SET ???
  4119.     AX = BFDEh
  4120.     BX = 0007h
  4121.     CX:DX = ???
  4122. Return: BX = 0000h (success)
  4123. SeeAlso: AX=BFDEh/BX=0000h,AX=BFDEh/BX=0006h
  4124. ----------15BFDEBX0008-----------------------
  4125. INT 15 - DESQview/X 1.02 - DVDOS4GX.DVR - ???
  4126.     AX = BFDEh
  4127.     BX = 0008h
  4128.     CX = segment of ???
  4129.     DS = ???
  4130. Return: BX = status
  4131.         0000h successful
  4132.         AL = ??? (80h or C0h)
  4133.         DX = ??? (0603h) if AL=C0h
  4134.         0001h failed
  4135.         AX = 0000h
  4136. Note:    called by DOS4GW.EXE
  4137. SeeAlso: AX=BFDEh/BX=0000h
  4138. ----------15BFDEBX0009-----------------------
  4139. INT 15 - DESQview/X 1.02 - DVDOS4GX.DVR - GET PROTECTED MODE PROGRAM LOADER
  4140.     AX = BFDEh
  4141.     BX = 0009h
  4142. Return: BX = 0000h (success)
  4143.     CX:DX -> full pathname to LOAD32.EXP
  4144. SeeAlso: AX=BFDEh/BX=0000h
  4145. ----------15BFDEBX000A-----------------------
  4146. INT 15 - DESQview/X 1.02 - DVDOS4GX.DVR - DECREMENT ???
  4147.     AX = BFDEh
  4148.     BX = 000Ah
  4149. Return: BX = 0000h (success)
  4150.     AX = new value of ??? counter
  4151. Notes:    also resets a variety of values if the counter goes negative
  4152.     called by DOS4GW.EXE
  4153. SeeAlso: AX=BFDEh/BX=0000h,AX=BFDEh/BX=000Bh
  4154. ----------15BFDEBX000B-----------------------
  4155. INT 15 - DESQview/X 1.02 - DVDOS4GX.DVR - INCREMENT ???
  4156.     AX = BFDEh
  4157.     BX = 000Bh
  4158. Return:    AX = new value of ??? counter
  4159. Note:    called by DOS4GW.EXE
  4160. SeeAlso: AX=BFDEh/BX=0000h,AX=BFDEh/BX=000Ah
  4161. ----------15BFDEBX000C-----------------------
  4162. INT 15 - DESQview/X 1.02 - DVDOS4GX.DVR - ???
  4163.     AX = BFDEh
  4164.     BX = 000Ch
  4165.     CL = ???
  4166.         00h
  4167.         nonzero
  4168. Return: ???
  4169. SeeAlso: AX=BFDEh/BX=0000h
  4170. ----------15BFDEBX000D-----------------------
  4171. INT 15 - DESQview/X 1.02 - DVDOS4GX.DVR - ???
  4172.     AX = BFDEh
  4173.     BX = 000Dh
  4174.     ???
  4175. Return: ???
  4176. SeeAlso: AX=BFDEh/BX=0000h
  4177. ----------15BFDEBX000E-----------------------
  4178. INT 15 - DESQview/X 1.02 - DVDOS4GX.DVR - ???
  4179.     AX = BFDEh
  4180.     BX = 000Eh
  4181.     DX:CX -> ???
  4182. Return: AX = segment of handle for calling task
  4183.     BX = ??? (probably destroyed)
  4184.     DX:CX -> ???
  4185. SeeAlso: AX=BFDEh/BX=0000h,AX=BFDEh/BX=000Fh,AX=BFDEh/BX=0013h
  4186. ----------15BFDEBX000F-----------------------
  4187. INT 15 - DESQview/X 1.02 - DVDOS4GX.DVR - ???
  4188.     AX = BFDEh
  4189.     BX = 000Fh
  4190. Return: AX = segment of handle for calling task
  4191.     BX = ??? (probably destroyed)
  4192.     DX:CX -> ???
  4193. Note:    identical to AX=BFDEh/BX=000Eh with CX:DX = 0000h:0000h
  4194. SeeAlso: AX=BFDEh/BX=000Eh,AX=BFDEh/BX=0010h
  4195. ----------15BFDEBX0010-----------------------
  4196. INT 15 - DESQview/X 1.02 - DVDOS4GX.DVR - GET TASK HANDLE
  4197.     AX = BFDEh
  4198.     BX = 0010h
  4199. Return: AX = segment of caller's task handle
  4200.     BX destroyed
  4201. SeeAlso: AX=BFDEh/BX=000Fh
  4202. ----------15BFDEBX0011-----------------------
  4203. INT 15 - DESQview/X 1.02 - DVDOS4GX.DVR - GET ???
  4204.     AX = BFDEh
  4205.     BX = 0011h
  4206. Return: CX = code segment of DVDOS4GX.DVR
  4207.     BX = ??? (0004h)
  4208. SeeAlso: AX=BFDEh/BX=0000h
  4209. ----------15BFDEBX0012-----------------------
  4210. INT 15 - DESQview/X 1.02 - DVDOS4GX.DVR - GET ???
  4211.     AX = BFDEh
  4212.     BX = 0012h
  4213. Return: DX = code segment of DVDOS4GX.DVR
  4214.     BX = ??? (012Ch)
  4215.     CX = ??? (0006h)
  4216. SeeAlso: AX=BFDEh/BX=0000h
  4217. ----------15BFDEBX0013-----------------------
  4218. INT 15 - DESQview/X 1.02 - DVDOS4GX.DVR - GET ???
  4219.     AX = BFDEh
  4220.     BX = 0013h
  4221. Return: DX:CX -> ???
  4222. SeeAlso: AX=BFDEh/BX=000Eh
  4223. ----------15BFDEBX0014-----------------------
  4224. INT 15 - DESQview/X 1.02 - DVDOS4GX.DVR - LOCK ??? MAILBOX
  4225.     AX = BFDEh
  4226.     BX = 0014h
  4227.     CX = index of ??? mailbox
  4228.         (0000h-0004h valid, but no range checking done)
  4229. Return: AX,BX destroyed
  4230. SeeAlso: AX=BFDEh/BX=0015h,AX=BFDEh/BX=0017h
  4231. ----------15BFDEBX0015-----------------------
  4232. INT 15 - DESQview/X 1.02 - DVDOS4GX.DVR - UNLOCK ??? MAILBOX
  4233.     AX = BFDEh
  4234.     BX = 0015h
  4235.     CX = index of ??? mailbox
  4236.         (0000h-0004h valid, but no range checking done)
  4237. Return: AX,BX destroyed
  4238. SeeAlso: AX=BFDEh/BX=0014h,AX=BFDEh/BX=0016h
  4239. ----------15BFDEBX0016-----------------------
  4240. INT 15 - DESQview/X 1.02 - DVDOS4GX.DVR - CHECK IF ??? MAILBOX OWNED
  4241.     AX = BFDEh
  4242.     BX = 0016h
  4243.     CX = index of ??? mailbox
  4244.         (0000h-0004h valid, but no range checking done)
  4245. Return: AX = status
  4246.         0000h no one owns mailbox
  4247.         0001h mailbox has an owner
  4248.     BX destroyed
  4249. SeeAlso: AX=BFDEh/BX=0015h,AX=BFDEh/BX=0017h
  4250. ----------15BFDEBX0017-----------------------
  4251. INT 15 - DESQview/X 1.02 - DVDOS4GX.DVR - GET ??? MAILBOX OWNER
  4252.     AX = BFDEh
  4253.     BX = 0017h
  4254.     CX = index of ??? mailbox
  4255.         (0000h-0004h valid, but no range checking done)
  4256. Return: AX = segment of mailbox owner's handle
  4257.     BX = segment of caller's task handle
  4258. SeeAlso: AX=BFDEh/BX=0015h,AX=BFDEh/BX=0016h
  4259. ----------15BFDEBXFFFD-----------------------
  4260. INT 15 - DESQview/X 1.02 - DVDOS4GX.DVR - GET ???
  4261.     AX = BFDEh
  4262.     BX = FFFDh
  4263. Return: CX:DX = ???
  4264. SeeAlso: AX=BFDEh/BX=FFFEh
  4265. ----------15BFDEBXFFFE-----------------------
  4266. INT 15 - DESQview/X 1.02 - DVDOS4GX.DVR - SET ???
  4267.     AX = BFDEh
  4268.     BX = FFFEh
  4269.     CX:DX = ???
  4270. SeeAlso: AX=BFDEh/BX=FFFDh
  4271. ----------15BFDEBXFFFF-----------------------
  4272. INT 15 - DESQview/X 1.02 - DVDOS4GX.DVR - NOP
  4273.     AX = BFDEh
  4274.     BX = FFFFh
  4275. SeeAlso: AX=BFDEh/BX=0000h
  4276. ----------15C0-------------------------------
  4277. INT 15 - SYSTEM - GET CONFIGURATION (XT after 1/10/86,AT mdl 3x9,CONV,XT286,PS)
  4278.     AH = C0h
  4279. Return: CF set if BIOS doesn't support call
  4280.     CF clear on success
  4281.         ES:BX -> ROM table (see below)
  4282.     AH = status
  4283.         00h successful
  4284.         86h unsupported function
  4285. Notes:    the 1/10/86 XT BIOS returns an incorrect value for the feature byte
  4286.     the configuration table is at F000h:E6F5h in 100% compatible BIOSes
  4287.     Dell machines contain the signature "DELL" or "Dell" at absolute FE076h
  4288.       and a model byte at absolute address FE845h
  4289.     Tandy 1000 machines contain 21h in the byte at F000h:C000h
  4290.     some AST machines contain the string "COPYRIGHT AST RESEARCH" one byte
  4291.       past the end of the configuration table
  4292.  
  4293. Format of ROM configuration table:
  4294. Offset    Size    Description
  4295.  00h    WORD    number of bytes following
  4296.  02h    BYTE    model (see below)
  4297.  03h    BYTE    submodel (see below)
  4298.  04h    BYTE    BIOS revision: 0 for first release, 1 for 2nd, etc.
  4299.  05h    BYTE    feature byte 1:
  4300.         bit 7 = DMA channel 3 used by hard disk BIOS
  4301.         bit 6 = 2nd 8259 installed
  4302.         bit 5 = Real-Time Clock installed
  4303.         bit 4 = INT 15/AH=4Fh called upon INT 9h
  4304.         bit 3 = wait for external event supported
  4305.         bit 2 = extended BIOS area allocated (usually at top of RAM)
  4306.         bit 1 = bus is Micro Channel instead of ISA
  4307.         bit 0 reserved
  4308.  06h    BYTE    feature byte 2:
  4309.         bit 7 = ???
  4310.         bit 6 = INT 16/AH=09h (keyboard functionality) supported
  4311.         bits 5-0 = ???
  4312.  07h    BYTE    feature byte 3:
  4313.         reserved (0)
  4314.  08h    BYTE    feature byte 4:
  4315.         reserved (0)
  4316.  09h    BYTE    feature byte 5:
  4317.         reserved (0) (IBM)
  4318.         ??? (08h) (Phoenix 386 v1.10)
  4319. ---AWARD BIOS---
  4320.  0Ah  N BYTEs    AWARD copyright notice
  4321. ---Phoenix BIOS---
  4322.  0Ah    BYTE    ??? (00h)
  4323.  0Bh    BYTE    major version
  4324.  0Ch    BYTE    minor version (BCD)
  4325.  0Dh  4 BYTEs    ASCIZ string "PTL" (Phoenix Technologies Ltd)
  4326.  
  4327. Values for model/submodel/revision:
  4328. Model  Submdl  Rev    BIOS date    System
  4329.  FFh    *    *    04/24/81    PC (original)
  4330.  FFh    *    *    10/19/81    PC (some bugfixes)
  4331.  FFh    *    *    10/27/82    PC (HD, 640K, EGA support)
  4332.  FFh    46h    ***      ???        Olivetti M15
  4333.  FEh    *    *    08/16/82    PC XT
  4334.  FEh    *    *    11/08/82    PC XT and Portable
  4335.  FEh    43h    ***      ???        Olivetti M240
  4336.  FEh    A6h    ???      ???        ??? (checked for by 386MAX v6.01)
  4337.  FDh    *    *    06/01/83    PCjr
  4338.  FCh    *    *    01/10/84    AT models 068,099 6 MHz 20MB
  4339.  FCh    00h    01h    06/10/85    AT model  239      6 MHz 30MB
  4340.  FCh    00h    <> 01h      ???        7531/2 Industrial AT
  4341.  FCh    01h    00h    11/15/85    AT models 319,339 8 MHz, Enh Keyb, 3.5"
  4342.  FCh    01h    00h    09/17/87    Tandy 3000
  4343.  FCh    01h    00h    01/15&88    Toshiba T5200/100
  4344.  FCh    01h    00h    12/26*89    Toshiba T1200/XE
  4345.             (Those date characters are not typos)
  4346.  FCh    01h    30h      ???        Tandy 3000NL
  4347.  FCh    01h    ???      ???        Compaq 286/386
  4348.  FCh    02h    00h    04/21/86    PC XT-286
  4349.  FCh    04h    00h    02/13/87     ** PS/2 Model 50 (10 MHz/1 ws 286)
  4350.  FCh    04h    03h    04/18/88    PS/2 Model 50Z (10 MHz/0 ws 286)
  4351.  FCh    05h    00h    02/13/87     ** PS/2 Model 60 (10 MHz 286)
  4352.  FCh    06h    ???      ???        7552 "Gearbox"
  4353.  FCh    08h    ***      ???        Epson, unknown model
  4354.  FCh    09h    00h      ???        PS/2 Model 25 (10 MHz 286)
  4355.  FCh    09h    02h    06/28/89    PS/2 Model 30-286
  4356.  FCh    0Bh    00h    02/16/90    PS/1 Model 2011 (10 MHz 286)
  4357.  FCh    30h    ***      ???        Epson, unknown model
  4358.  FCh    31h    ***      ???        Epson, unknown model
  4359.  FCh    33h    ***      ???        Epson, unknown model
  4360.  FCh    42h    ***      ???        Olivetti M280
  4361.  FCh    45h    ***      ???        Olivetti M380 (XP 1, XP3, XP 5)
  4362.  FCh    48h    ***      ???        Olivetti M290
  4363.  FCh    4Fh    ***      ???        Olivetti M250
  4364.  FCh    50h    ***      ???        Olivetti M380 (XP 7)
  4365.  FCh    51h    ***      ???        Olivetti PCS286
  4366.  FCh    52h    ***      ???        Olivetti M300
  4367.  FCh    81h    00h    01/15/88    Phoenix 386 BIOS v1.10 10a
  4368.  FBh    00h    01h    01/10/86    PC XT, Enh Keyb, 3.5" support
  4369.  FBh    00h    02h    05/09/86    PC XT
  4370.  FBh    4Ch    ***      ???        Olivetti M200
  4371.  FAh    00h    00h    09/02/86    PS/2 Model 30 (8 MHz 8086)
  4372.  FAh    00h    01h    12/12/86    PS/2 Model 30
  4373.  FAh    01h    00h      ???        PS/2 Model 25/25L (8 MHz 8086)
  4374.  FAh    4Eh    ***      ???        Olivetti M111
  4375.  F9h    00h    00h    09/13/85    PC Convertible
  4376.  F8h    00h    00h    03/30/87     ** PS/2 Model 80 (16MHz 386)
  4377.  F8h    01h    00h    10/07/87    PS/2 Model 80 (20MHz 386)
  4378.  F8h    04h    02h    04/11/88    PS/2 Model 70 20MHz, type 2 system brd
  4379.  F8h    04h    03h    03/17/89    PS/2 Model 70 20MHz, type 2 system brd
  4380.  F8h    09h    00h      ???        PS/2 Model 70 16MHz, type 1 system brd
  4381.  F8h    09h    02h    04/11/88    PS/2 Model 70 some models
  4382.  F8h    09h    03h    03/17/89    PS/2 Model 70 some models
  4383.  F8h    0Bh    00h    01/18/89    PS/2 Model P70 (8573-121) typ 2 sys brd
  4384.  F8h    0Bh    02h    12/16/89    PS/2 Model P70 ??
  4385.  F8h    0Ch    00h    11/02/88    PS/2 Model 55SX (16 MHz 386SX)
  4386.  F8h    0Dh    00h      ???        PS/2 Model 70 25MHz, type 3 system brd
  4387.  F8h    11h    00h    10/01/90    PS/2 Model 90 (25 MHz 486)
  4388.  F8h    13h    00h    10/01/90    PS/2 Model 90 (33 MHz 486)
  4389.  F8h    14h    00h    10/01/90    PS/2 Model 90-AK9 (25 MHz 486)
  4390.  F8h    16h    00h    10/01/90    PS/2 Model 90-AKD (33 MHz 486)
  4391.  F8h    19h    05h      ???        PS/2 Model 35/35LS or 40 (20 MHz 386SX)
  4392.  F8h    1Bh    00h    10/02/89    PS/2 Model 70-486 (25 MHz 486)
  4393.  F8h    1Ch    00h    02/08/90    PS/2 Model 65-121 (16 MHz 386SX)
  4394.  F8h    1Eh    00h    02/08/90    PS/2 Model 55LS (16 MHz 386SX)
  4395.  F8h    23h    01h      ???        PS/2 Model L40 (20 MHz 386SX)
  4396.  F8h    25h    06h      ???        PS/2 Model M57 (20 MHz 386SLC)
  4397.  F8h    26h    01h      ???        PS/2 Model 57 (20 MHz 386SX)
  4398.  F8h    2Ah    00h      ???        PS/2 Model 95 (50 MHz 486)
  4399.  F8h    2Bh    00h      ???        PS/2 Model 90 (50 MHz 486)
  4400.  F8h    2Ch    01h      ???        PS/2 Model 95 (20 MHz 486SX)
  4401.  F8h    2Dh    00h      ???        PS/2 Model 90 (20 MHz 486SX)
  4402.  F8h    2Eh    01h      ???        PS/2 Model 95 (20 MHz 486SX + 487SX)
  4403.  F8h    2Fh    00h      ???        PS/2 Model 90 (20 MHz 486SX + 487SX)
  4404.  F8h    30h    00h      ???        PS/1 Model 2121 (16 MHz 386SX)
  4405.  F8h    50h    00h      ???        PS/2 Model P70 (8573) (16 MHz 386)
  4406.  F8h    50h    01h    12/16/89    PS/2 Model P70 (8570-031)
  4407.  F8h    52h    00h      ???        PS/2 Model P75 (33 MHz 486)
  4408.  F8h    61h    ***      ???        Olivetti P500
  4409.  F8h    62h    ***      ???        Olivetti P800
  4410.  F8h    80h    00h      ???        PS/2 Model 80 (25 MHz 386)
  4411.  F8h    80h    01h    11/21/89    PS/2 Model 80-A21
  4412.  F8h    ???    ???      ???        PS/2 Model 90 (25 MHz 486SX)
  4413.  F8h    ???    ???      ???        PS/2 Model 95 (25 MHz 486SX)
  4414.  F8h    ???    ???      ???        PS/2 Model 90 (25 MHz 486SX + 487SX)
  4415.  F8h    ???    ???      ???        PS/2 Model 95 (25 MHz 486SX + 487SX)
  4416.  E1h    ???    ???      ???        ??? (checked for by DOS4GW.EXE)
  4417.  9Ah    *    *      ???        Compaq XT/Compaq Plus
  4418.  30h    ???    ???      ???        Sperry PC
  4419.  2Dh    *    *      ???        Compaq PC/Compaq Deskpro
  4420.  ???    56h    ???      ???        Olivetti, unknown model
  4421.  ???    74h    ???      ???        Olivetti, unknown model
  4422.     * This BIOS call is not implemented in these early versions.
  4423.       Read Model byte at F000h:FFFEh and BIOS date at F000h:FFF5h.
  4424.    ** These BIOS versions require the DASDDRVR.SYS patches.
  4425.   *** These Olivetti and Epson machines store the submodel in the byte at
  4426.     F000h:FFFDh.
  4427.  
  4428. Values for Dell model byte:
  4429.  02h    Dell 200
  4430.  03h    Dell 300
  4431.  05h    Dell 220
  4432.  06h    Dell 310
  4433.  07h    Dell 325
  4434.  09h    Dell 310A
  4435.  0Ah    Dell 316
  4436.  0Bh    Dell 220E
  4437.  0Ch    Dell 210
  4438.  0Dh    Dell 316SX
  4439.  0Eh    Dell 316LT
  4440.  0Fh    Dell 320LX
  4441.  11h    Dell 425E
  4442. ----------15C1-------------------------------
  4443. INT 15 - SYSTEM - RETURN EXTENDED-BIOS DATA-AREA SEGMENT ADDRESS (PS)
  4444.     AH = C1h
  4445. Return: CF set on error
  4446.     CF clear if successful
  4447.         ES = segment of data area
  4448. SeeAlso: AH=04h"ABIOS"
  4449. ----------15C200BH00-------------------------
  4450. INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - ENABLE/DISABLE
  4451.     AX = C200h
  4452.     BH = 00h disable
  4453.          01h enable
  4454. Return: CF set on error
  4455.     AH = status
  4456.         00h successful
  4457.         01h invalid function
  4458.         02h invalid input
  4459.         03h interface error
  4460.         04h need to resend
  4461.         05h no device handler installed
  4462. ----------15C201-----------------------------
  4463. INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - RESET
  4464.     AX = C201h
  4465. Return: CF set on error
  4466.         AH = status (see AX=C200h)
  4467.     CF clear if successful
  4468.         BH = device ID
  4469. SeeAlso: INT 33/AX=0000h
  4470. ----------15C202-----------------------------
  4471. INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - SET SAMPLING RATE
  4472.     AX = C202h
  4473.     BH = sampling rate
  4474.         00h 10/second
  4475.         01h 20/second
  4476.         02h 40/second
  4477.         03h 60/second
  4478.         04h 80/second
  4479.         05h 100/second
  4480.         06h 200/second
  4481. Return: CF set on error
  4482.         AH = status (see AX=C200h)
  4483. SeeAlso: INT 33/AX=001Ch
  4484. ----------15C203-----------------------------
  4485. INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - SET RESOLUTION
  4486.     AX = C203h
  4487.     BH = resolution
  4488.         00h one count per mm
  4489.         01h two counts per mm
  4490.         02h four counts per mm
  4491.         03h eight counts per mm
  4492. Return: CF set on error
  4493.         AH = status (see AX=C200h)
  4494. ----------15C204-----------------------------
  4495. INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - GET TYPE
  4496.     AX = C204h
  4497. Return: CF set on error
  4498.         AH = status (see AX=C200h)
  4499.     CF clear if successful
  4500.         BH = device ID
  4501. ----------15C205-----------------------------
  4502. INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - INITIALIZE
  4503.     AX = C205h
  4504.     BH = data package size (1 - 8 bytes)
  4505. Return: CF set on error
  4506.         AH = status (see AX=C200h)
  4507. SeeAlso: AX=C201h
  4508. ----------15C206-----------------------------
  4509. INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - GET/SET SCALING FACTOR
  4510.     AX = C206h
  4511.     BH = subfunction
  4512.         00h return device status
  4513.         Return: BL = status
  4514.                bit 0: right button pressed
  4515.                bit 1: reserved
  4516.                bit 2: left button pressed
  4517.                bit 3: reserved
  4518.                bit 4: 0 if 1:1 scaling, 1 if 2:1 scaling
  4519.                bit 5: device enabled
  4520.                bit 6: 0 if stream mode, 1 if remote mode
  4521.                bit 7: reserved
  4522.             CL = resolution (see AX=C203h)
  4523.             DL = sample rate, reports per second
  4524.         01h set scaling at 1:1
  4525.         02h set scaling at 2:1
  4526. Return: CF set on error
  4527.         AH = status (see AX=C200h)
  4528. ----------15C207-----------------------------
  4529. INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - SET DEVICE HANDLER ADDR
  4530.     AX = C207h
  4531.     ES:BX -> FAR user device handler
  4532. Return: CF set on error
  4533.         AH = status (see AX=C200h)
  4534. SeeAlso: INT 33/AX=000Ch
  4535. ----------15C3------------------------------
  4536. INT 15 - SYSTEM - ENABLE/DISABLE WATCHDOG TIMEOUT (PS50+)
  4537.     AH = C3h
  4538.     AL = 00h disable
  4539.          01h enable
  4540.         BX = timer counter
  4541. Return: CF set on error
  4542.     CF clear if successful
  4543. Note:    the watchdog timer generates an NMI
  4544. ----------15C4-------------------------------
  4545. INT 15 - SYSTEM - PROGRAMMABLE OPTION SELECT (PS50+)
  4546.     AH = C4h
  4547.     AL = 00h return base POS register address
  4548.          01h enable slot
  4549.          BL = slot number
  4550.          02h enable adapter
  4551. Return: CF set on error
  4552.     DX = base POS register address (if function 00h)
  4553. SeeAlso: AH=C6h
  4554. ----------15C5-------------------------------
  4555. INT 15 UC - OS HOOK - ROM BIOS TRACING CALLOUT (PS30/286,PS50Z,PS95)
  4556.     AH = C5h
  4557.     AL = interrupt being invoked
  4558.         01h INT 19
  4559.         02h INT 14
  4560.         03h INT 16
  4561.         04h INT 40 (floppy INT 13)
  4562.         05h INT 17
  4563.         06h INT 10
  4564.         07h INT 12
  4565.         08h INT 11
  4566.         09h INT 1A
  4567. Return: all registers except AX must be preserved
  4568. Notes:    called as the very first action of the indicated ROM BIOS interrupt
  4569.       handlers on the PS/2 Models 30/286, 50Z, and 95
  4570.     default handler does nothing and returns CF clear for the above
  4571.       subfunctions, CF set and AH=86h for all other subfunctions
  4572.     value of AX passed to the original interrupt handler is pushed on
  4573.       stack immediately prior to call
  4574. ----------15C6-------------------------------
  4575. INT 15 U - later PS/2 models - GET POS DATA
  4576.     AH = C6h
  4577.     ???
  4578. Return: ???
  4579. Notes:    this function is referenced by name and number in some IBM BIOS manuals
  4580.     IBM reports that "there are a number of problems with this call" and
  4581.       does not recommend its use.
  4582. SeeAlso: AH=C4h
  4583. ----------15C7-------------------------------
  4584. INT 15 U - PS/2 Model 95 - ???
  4585.     AH = C7h
  4586.     ???
  4587. Return: ???
  4588. ----------15C8-------------------------------
  4589. INT 15 U - PS/2 Model 95 - ???
  4590.     AH = C8h
  4591.     ???
  4592. Return: ???
  4593. ----------15C9-------------------------------
  4594. INT 15 U - newer PS/2; various BIOSes - GET CPU TYPE AND MASK REVISION
  4595.     AH = C9h
  4596.     AL = 10h (may be required on some non-PS BIOSes)
  4597. Return: AH = 00h
  4598.     CH = CPU type
  4599.         03h 80386DX or clone
  4600.         04h 80486
  4601.         23h 80386SX or clone
  4602.     CL = mask revision (stepping level)
  4603. Notes:    the BIOS must save DX at startup in order to be able to support this
  4604.       call; PS/2 Models 56, 57, 90, and 95 are known to support it
  4605.     the PS/2 BIOS merely reads CMOS locations 190h (type) and 191h (rev)
  4606. ----------15CA-------------------------------
  4607. INT 15 U - PS/2 Model 95 - ???
  4608.     AH = CAh
  4609.     ???
  4610. Return: ???
  4611. ----------15CB-------------------------------
  4612. INT 15 U - PS/2 Model 95 - ???
  4613.     AH = CBh
  4614.     ???
  4615. Return: ???
  4616. ----------15CC-------------------------------
  4617. INT 15 U - PS/2 Model 95 - ???
  4618.     AH = CCh
  4619.     ???
  4620. Return: ???
  4621. ----------15CD-------------------------------
  4622. INT 15 U - PS/2 Model 95 - ???
  4623.     AH = CDh
  4624.     ???
  4625. Return: ???
  4626. ----------15CE-------------------------------
  4627. INT 15 U - PS/2 Model 95 - ???
  4628.     AH = CEh
  4629.     ???
  4630. Return: ???
  4631. ----------15CF-------------------------------
  4632. INT 15 U - PS/2 Model 95 - ???
  4633.     AH = CFh
  4634.     ???
  4635. Return: ???
  4636. ----------15D800-----------------------------
  4637. INT 15 - EISA SYSTEM ROM - READ SLOT CONFIGURATION INFORMATION
  4638.     AX = D800h
  4639.     CL = slot number (including embedded and virtual)
  4640. Return: CF clear if successful
  4641.         AH = 00h
  4642.     CF set on error
  4643.         AH = error code
  4644.         80h invalid slot number
  4645.         82h EISA CMOS corrupt
  4646.         83h empty slot
  4647.         86h invalid BIOS-FW function call
  4648.         87h invalid system configuration
  4649.     AL bit flags
  4650.         bit 7: set if duplicate IDs
  4651.         6: set if product ID readable
  4652.           4,5: slot type (00=expansion, 01=embedded, 10=virtual device)
  4653.           0-3: duplicate ID number if bit 7 set
  4654.     BH = major revision level of configuration utility
  4655.     BL = minor revision level of configuration utility
  4656.     CX = checksum of configuration file
  4657.     DH = number of device functions
  4658.     DL = combined function information byte
  4659.     SI:DI = 4-byte compressed ID (DI = bytes 0&1, SI = bytes 2&3)
  4660. Note:    call with AL=80h if using 32-bit CS addressing mode instead of 16-bit
  4661. SeeAlso: AX=D801h,AX=D804h
  4662. ----------15D801-----------------------------
  4663. INT 15 - EISA SYSTEM ROM - READ FUNCTION CONFIGURATION INFORMATION
  4664.     AX = D801h
  4665.     CH = function number to read
  4666.     CL = slot number (including embedded and virtual)
  4667.     DS:SI -> 320-byte buffer for standard configuration data block
  4668. Return: CF clear if successful
  4669.         AH = 00h
  4670.         DS:SI buffer filled
  4671.     CF set on error
  4672.         AH = error code
  4673.         80h invalid slot number
  4674.         81h invalid function number
  4675.         82h EISA CMOS corrupt
  4676.         83h empty slot
  4677.         86h invalid BIOS-FW function call
  4678.         87h invalid system configuration
  4679.     BX destroyed
  4680. Note:    call with AL=81h if using 32-bit CS addressing mode instead of 16-bit
  4681. ----------15D802-----------------------------
  4682. INT 15 - EISA SYSTEM ROM - CLEAR NONVOLATILE MEMORY (EISA CMOS)
  4683.     AX = D802h
  4684.     BH = EISA config utility major revision level
  4685.     BL = EISA config utility minor revision level
  4686. Return: CF clear if successful
  4687.         AH = 00h
  4688.     CF set on error
  4689.         AH = error code
  4690.         84h error clearing CMOS
  4691.         86h invalid BIOS-FW function call
  4692.         88h config utility version not supported
  4693. Note:    call with AL=82h if using 32-bit CS addressing mode instead of 16-bit
  4694. SeeAlso: AX=D803h
  4695. ----------15D803-----------------------------
  4696. INT 15 - EISA SYSTEM ROM - WRITE NONVOLATILE MEMORY
  4697.     AX = D803h
  4698.     CX = length of data structure (0000h = empty slot)
  4699.         includes two bytes for config file checksum
  4700.     DS:SI -> configuration data
  4701. Return: CF clear if successful
  4702.         AH = 00h
  4703.     CF set on error
  4704.         AH = error code
  4705.         84h error clearing CMOS
  4706.         85h EISA CMOS is full
  4707.         86h invalid BIOS-FW function call
  4708. Note:    call with AL=83h if using 32-bit CS addressing mode instead of 16-bit
  4709. SeeAlso: AX=D802h
  4710. ----------15D804-----------------------------
  4711. INT 15 - EISA SYSTEM ROM - READ PHYSICAL SLOT
  4712.     AX = D804h
  4713.     CL = slot number (including embedded and virtual)
  4714. Return: CF clear if successful
  4715.         AH = 00h
  4716.     CF set on error
  4717.         AH = error code
  4718.         80h invalid slot number
  4719.         83h empty slot
  4720.         86h invalid BIOS-FW function call
  4721.     SI:DI = 4-byte compressed ID (DI = bytes 0&1, SI = bytes 2&3)
  4722. Note:    call with AL=84h if using 32-bit CS addressing mode instead of 16-bit
  4723. SeeAlso: AX=D800h
  4724. ----------15D8-------------------------------
  4725. INT 15 - EISA SYSTEM ROM - 32-bit CS ADDRESSING MODE CALLS
  4726.     AH = D8h
  4727.     AL = 80h to 84h
  4728.     other registers as appropriate for AL=00h to 04h
  4729. Return: as appropriate for AL=00h to 04h
  4730. Note:    these functions are identical to AX=D800h to D804h, except that they
  4731.       should be called when using 32-bit CS addressing mode (pointers use
  4732.       ESI rather than SI as offset) instead of 16-bit addressing mode
  4733. SeeAlso: AX=D800h,AX=D801h,AX=D802h,AX=D803h,AX=D804h
  4734. ----------15DE00-----------------------------
  4735. INT 15 - DESQview - GET PROGRAM NAME
  4736.     AX = DE00h
  4737. Return: AX = offset into DESQVIEW.DVO of program most recently selected from
  4738.         the "Switch Windows" menu (see below)
  4739. Note:    always returns AX=0000h under DESQview/X
  4740. SeeAlso: AX=DE07h
  4741.  
  4742. Format of program entry in DESQVIEW.DVO:
  4743. Offset    Size    Description
  4744.  00h    BYTE    length of name (FFh if end of file)
  4745.  01h  N BYTEs    name
  4746.       2 BYTEs    keys to invoke program (second = 00h if only one key used)
  4747.     BYTE    program type
  4748.         00h normal program
  4749.         04h divider
  4750.         80h Delete a Program
  4751.         81h Change a Program
  4752.     WORD    ??? apparently always 0000h
  4753. ----------15DE01-----------------------------
  4754. INT 15 - DESQview - UPDATE "OPEN WINDOW" MENU
  4755.     AX = DE01h
  4756. Return: nothing
  4757. Notes:    reads DESQVIEW.DVO, disables Open menu if file not in current directory
  4758.     NOP for DESQview/X
  4759. ----------15DE02-----------------------------
  4760. INT 15 - DESQview 1.x only - SET ??? FLAG FOR CURRENT WINDOW
  4761.     AX = DE02h
  4762. Return: nothing
  4763. Note:    this call is a NOP in DV 2.x
  4764. SeeAlso: AX=DE03h
  4765. ----------15DE03-----------------------------
  4766. INT 15 - DESQview 1.x only - GET ??? FOR CURRENT WINDOW
  4767.     AX = DE03h
  4768. Return: AX = ??? for current window
  4769.     BX = ??? for current window
  4770. Note:    this call is a NOP in DV 2.x
  4771. SeeAlso: AX=DE02h
  4772. ----------15DE04-----------------------------
  4773. INT 15 - DESQview - GET AVAILABLE COMMON MEMORY
  4774.     AX = DE04h
  4775. Return: BX = bytes of common memory available
  4776.     CX = largest block available
  4777.     DX = total common memory in bytes
  4778. SeeAlso: AX=DE05h,AX=DE06h
  4779. ----------15DE05-----------------------------
  4780. INT 15 - DESQview - GET AVAILABLE CONVENTIONAL MEMORY
  4781.     AX = DE05h
  4782. Return: BX = K of memory available
  4783.     CX = largest block available
  4784.     DX = total conventional memory in K
  4785. SeeAlso: AX=DE04h,AX=DE06h
  4786. ----------15DE06-----------------------------
  4787. INT 15 - DESQview - GET AVAILABLE EXPANDED MEMORY
  4788.     AX = DE06h
  4789. Return: BX = K of expanded memory available
  4790.     CX = largest block available
  4791.     DX = total expanded memory in K
  4792. SeeAlso: AX=DE04h,AX=DE05h
  4793. ----------15DE07-----------------------------
  4794. INT 15 - DESQview - "APPNUM" - GET CURRENT PROGRAM'S NUMBER
  4795.     AX = DE07h
  4796. Return: AX = number of program as it appears on the "Switch Windows" menu
  4797. Note:    this API call may be made from a hardware interrupt handler
  4798. SeeAlso: AX=DE00h
  4799. ----------15DE08-----------------------------
  4800. INT 15 - DESQview - GET ???
  4801.     AX = DE08h
  4802. Return: AX = 0000h if ??? is not set to the current task
  4803.          0001h if ??? is set to the current task
  4804. ----------15DE09-----------------------------
  4805. INT 15 - DESQview - UNIMPLEMENTED
  4806.     AX = DE09h
  4807. Return: nothing (NOP in DV 1.x and 2.x)
  4808. ----------15DE0A-----------------------------
  4809. INT 15 - DESQview v2.00+ - "DBGPOKE" - DISPLAY CHARACTER ON STATUS LINE
  4810.     AX = DE0Ah
  4811.     BL = character
  4812. Return: character displayed, next call will display in next position (which
  4813.     wraps back to the start of the line if off the right edge of screen)
  4814. Notes:    displays character on bottom line of *physical* screen, regardless
  4815.       of current size of window (even entirely hidden)
  4816.     does not know about graphics display modes, just pokes the characters
  4817.       into display memory
  4818.     this API call may be made from a hardware interrupt handler
  4819. SeeAlso: AX=1003h
  4820. ----------15DE0B-----------------------------
  4821. INT 15 - DESQview v2.00+ - "APILEVEL" - DEFINE MINIMUM API LEVEL REQUIRED
  4822.     AX = DE0Bh
  4823.     BL = API level minor version number
  4824.     BH = API level major version number
  4825. Return: AX = maximum API level (AH = major, AL = minor)
  4826. Notes:    if the requested API level is greater than the version of DESQview, a
  4827.       "You need a newer version" error window is popped up
  4828.     the API level defaults to 1.00, and is inherited by child tasks
  4829. ----------15DE0C-----------------------------
  4830. INT 15 - DESQview v2.00+ - "GETMEM" - ALLOCATE "SYSTEM" MEMORY
  4831.     AX = DE0Ch
  4832.     BX = number of bytes
  4833. Return: ES:DI -> allocated block or 0000h:0000h (DV 2.26+)
  4834. Note:    use SETERROR (AX=DE15h) to avoid a user prompt if there is insufficient
  4835.       system memory
  4836. SeeAlso: AX=1001h,AX=102Eh,AX=DE0Dh,AX=DE15h,AX=DE19h
  4837. ----------15DE0D-----------------------------
  4838. INT 15 - DESQview v2.00+ - "PUTMEM" - DEALLOCATE "SYSTEM" MEMORY
  4839.     AX = DE0Dh
  4840.     ES:DI -> previously allocated block
  4841. Return: nothing
  4842. SeeAlso: AX=1002h,AX=DE0Ch
  4843. ----------15DE0E-----------------------------
  4844. INT 15 - DESQview v2.00+ - "FINDMAIL" - FIND MAILBOX BY NAME
  4845.     AX = DE0Eh
  4846.     ES:DI -> name to find
  4847.     CX = length of name
  4848. Return: BX = 0000h not found
  4849.          0001h found
  4850.         DS:SI = object handle
  4851. SeeAlso: AH=12h/BH=11h,AH=12h/BX=1200h"GETNAME"
  4852.  
  4853. Special mailbox names:
  4854.  "COM1" ... "COM4"    RBcomm using COM1 ... COM4
  4855.  "DESQview/X Help Engine"
  4856.  "DESQview/X Network Server"  Network Manager
  4857.  "DESQview X Server0"    X-Windows server
  4858.  "DESQview X Server7"    X-Windows printing service
  4859.  "INBOX"        DESQview/X LPD requests
  4860.  "OUTBOX"        DESQview/X LPD responses
  4861.  "WAITBOX"        semaphore to synchronize DESQview/X LPD communications
  4862. ----------15DE0F-----------------------------
  4863. INT 15 - DESQview v2.00+ - ENABLE DESQview EXTENSIONS
  4864.     AX = DE0Fh
  4865. Return: AX and BX destroyed (seems to be bug, weren't saved&restored)
  4866. Notes:    sends a manager stream with opcodes AEh, BDh, and BFh to task's window
  4867.     enables an additional mouse mode
  4868. ----------15DE10-----------------------------
  4869. INT 15 - DESQview v2.00+ - "PUSHKEY" - PUT KEY INTO KEYBOARD INPUT STREAM
  4870.     AX = DE10h
  4871.     BH = scan code
  4872.     BL = character
  4873. Return: nothing
  4874. Notes:    a later read will get the keystroke as if it had been typed by the user
  4875.     multiple pushes are read last-in first-out
  4876.     if a script exists for the pushed key in the current application, the
  4877.       script will be executed
  4878.     early copies of DV 2.00 destroy AX, BX, ES, and DI
  4879. SeeAlso: INT 16/AH=05h
  4880. ----------15DE11BL00-------------------------
  4881. INT 15 - DESQview v2.00+ - "JUSTIFY" - EN/DISABLE AUTOM. WINDOW JUSTIFICATION
  4882.     AX = DE11h
  4883.     BL = 00h      viewport will not move automatically
  4884.          nonzero  viewport will move to keep cursor visible (default)
  4885. Return: nothing
  4886. ----------15DE12BX0000-----------------------
  4887. INT 15 - DESQview v2.01+ - "CSTYLE" - SET "C"-COMPATIBLE CONTROL CHAR INTERPRET
  4888.     AX = DE12h
  4889.     BX = 0000h    select normal style (linefeed only moves down)
  4890.          nonzero  select C style (linefeed moves to start of next line)
  4891. Return: nothing
  4892. Note:    set on a per-task basis, and inherited from the parent task
  4893. ----------15DE13-----------------------------
  4894. INT 15 - DESQview v2.20+ - "GETCRIT" - GET CRITICAL NESTING COUNT
  4895.     AX = DE13h
  4896. Return: BX = number of calls to BEGINC or ENTERC (see INT 15/AX=101Bh,DE1Ch)
  4897.          without matching ENDC (see INT 15/AX=101Ch)
  4898. Note:    this API call may be made from within a hardware interrupt handler
  4899. SeeAlso: AX=101Bh,AX=101Ch,AX=DE1Bh,AX=DE1Ch
  4900. ----------15DE14-----------------------------
  4901. INT 15 - DESQview v2.20+ - GET OBJECT TYPE
  4902.     AX = DE14h
  4903.     ES:DI -> object
  4904. Return: BL = 00h not an object
  4905.          08h window or task
  4906.          09h mailbox
  4907.          0Ah keyboard
  4908.          0Bh timer
  4909.          0Ch objectq
  4910.          0Fh pointer
  4911.          10h panel
  4912. SeeAlso: AX=1016h
  4913. ----------15DE15-----------------------------
  4914. INT 15 - DESQview v2.20+ - SET ERROR HANDLING
  4915.     AX = DE15h
  4916.     BL = error handling mode
  4917.         00h post system error on all error conditions
  4918.         01h return carry flag set on calls to ADDTO, SUBFROM, and WRITE
  4919.         messages sent to mailboxes which fail due to lack of system
  4920.         or common memory
  4921.         02h (v2.26+) same as 01h, but also return null pointer for GETMEM
  4922.         calls which fail due to lack of system memory
  4923. Return: nothing
  4924. SeeAlso: AX=DE0Ch,AX=DE16h
  4925. ----------15DE16-----------------------------
  4926. INT 15 - DESQview v2.20+ - GET ERROR HANDLING
  4927.     AX = DE16h
  4928. Return: BL = current mode
  4929.         00h always post system error
  4930.         01h return carry flag set on failed mailbox writes
  4931.         02h return CF set on failed mailbox writes and NULL on failed
  4932.         GETMEM calls
  4933. SeeAlso: AX=DE15h
  4934. ----------15DE17-----------------------------
  4935. INT 15 - DESQview v2.20-2.25 - reserved
  4936.     AX = DE17h
  4937. Return: pops up "Programming error" window
  4938. Note:    AX = 1117h is NOT identical to this call under DESQview 2.20 thru 2.25
  4939. SeeAlso: AX=1117h
  4940. ----------15DE17-----------------------------
  4941. INT 15 - DESQview v2.26+ - "ASSERTMAP" - GET/SET MAPPING CONTEXT
  4942.     AX = DE17h
  4943.     BX = function
  4944.         0000h   get current mapping context without setting
  4945.         nonzero set new mapping context to BX
  4946. Return: BX = mapping context in effect before call
  4947. Notes:    mapping contexts determine conventional-memory addressability; setting
  4948.       a mapping context ensures that the associated program and data areas
  4949.       are in memory for access.  Usable by drivers, TSRs and shared
  4950.       programs.
  4951.     caller need not be running under DESQview
  4952.     this API call may be made from a hardware interrupt handler
  4953. SeeAlso: AX=1117h,AX=DE21h,INT 2F/AX=1685h
  4954. ----------15DE18-----------------------------
  4955. INT 15 - DESQview v2.20+ - internal - ???
  4956.     AX = DE18h
  4957.     BP = function number
  4958.         high byte must be 10h
  4959.         low byte is function
  4960.         00h set ???
  4961.             BL = ???  (00h-10h, video mode???)
  4962.             BH = value to store
  4963.         03h set ???
  4964.             BL = ??? (stored in driver)
  4965.         0Ah get ???
  4966.             ES:DI -> 18-byte buffer to hold ???
  4967. Note:    calls video driver (NOP for Hercules driver,probably CGA and MCGA also)
  4968. ----------15DE19-----------------------------
  4969. INT 15 - DESQview v2.23+ - "GETCOMMON" - ALLOCATE "COMMON" MEMORY
  4970.     AX = DE19h
  4971.     BX = number of bytes to allocate
  4972. Return: AX = 0000h successful
  4973.         ES:DI -> allocated block
  4974.          nonzero insufficient memory
  4975. Note:    this API call may be made from within a hardware interrupt handler
  4976. SeeAlso: AX=DE0Ch,AX=DE15h,AX=DE1Ah
  4977. ----------15DE1A-----------------------------
  4978. INT 15 - DESQview v2.23+ - "PUTCOMMON" - DEALLOCATE "COMMON" MEMORY
  4979.     AX = DE1Ah
  4980.     DS:SI -> previously allocated block
  4981. Note:    this function may be called from within a hardware interrupt handler
  4982. SeeAlso: AX=DE0Dh,AX=DE19h
  4983. ----------15DE1B-----------------------------
  4984. INT 15 - DESQview v2.23+ internal - DECREMENT CRITICAL NESTING COUNT
  4985.     AX = DE1Bh
  4986. Return: nothing
  4987. SeeAlso: AX=101Ch,AX=DE13h,AX=DE1Ch
  4988. ----------15DE1C-----------------------------
  4989. INT 15 - DESQview v2.23+ - "ENTERC" - INCREMENT CRITICAL NESTING COUNT
  4990.     AX = DE1Ch
  4991. Return: nothing
  4992. Notes:    similar to AX=101Bh, but begins the critical region without ensuring
  4993.       that DOS is free
  4994.     the official documentation states that this call should be paired with
  4995.       "ENDC" (AX=101Ch); no mention is made of AX=DE1Bh
  4996.     this API call may be made from within a hardware interrupt handler
  4997. SeeAlso: AX=101Bh,AX=101Ch,AX=DE13h,AX=DE1Bh
  4998. ----------15DE1D-----------------------------
  4999. INT 15 - DESQview v2.23+ - "PUTKEY" - FAKE USER KEYSTROKES
  5000.     AX = DE1Dh
  5001.     DX = segment of handle for task to receive keystroke
  5002.     BL = character
  5003.     BH = scan code
  5004. Return: AX = 0000h if successful
  5005.        nonzero if receiver's keyboard buffer was full
  5006. Notes:    the key is treated as though the user had pressed it, ignoring any
  5007.       script which may be bound to the key, and using the current field
  5008.       table if the keyboard object is in field processing mode
  5009.     multiple PUTKEYs are seen in the order in which they are executed
  5010. SeeAlso: AX=DE10h
  5011. ----------15DE1E-----------------------------
  5012. INT 15 - DESQview v2.23+ - "SCRNINFO" - GET TRUE VIDEO PARAMETERS
  5013.     AX = DE1Eh
  5014. Return:    CL = actual number of rows on screen
  5015.     CH = actual number of columns on screen
  5016.     BL = actual video mode (may differ from INT 10/AH=0Fh return) (v2.26+)
  5017. Note:    this API call may be made from a hardware interrupt handler
  5018. SeeAlso: INT 10/AH=0Fh
  5019. ----------15DE1F-----------------------------
  5020. INT 15 - DESQview v2.23+ - "DOSUSER" - GET HANDLE OF TASK CURRENTLY USING DOS
  5021.     AX = DE1Fh
  5022. Return: BX = segment of task handle or 0000h if no tasks are using DOS
  5023. Note:    this API call may be made from within a hardware interrupt handler
  5024. SeeAlso: AX=DE13h,INT 21/AH=34h
  5025. ----------15DE20-----------------------------
  5026. INT 15 - DESQview v2.26+ - "DISPATCHINT" - INTERRUPT ANOTHER TASK
  5027.     AX = DE20h
  5028.     BX = segment of handle of task to interupt
  5029.     DX:CX -> FAR interrupt routine
  5030.     BP,SI,DI,DS,ES as required by interrupt routine
  5031. Return: nothing
  5032. Notes:    unlike "PGMINT" (AX=1021h), DISPATCHINT may be applied to the task
  5033.       making the DISPATCHINT call
  5034.     multiple "DISPATCHINT" calls are processed in the order in which they
  5035.       were executed
  5036.     the FAR routine is entered with the current ES, DS, SI, DI, and BP
  5037.       values, using the task's internal stack (see AX=101Ah); only SS:SP
  5038.       needs to be preserved
  5039.     this API call may be made from within a hardware interrupt handler
  5040. SeeAlso: AX=1021h,AX=DE2Ah
  5041. ----------15DE21-----------------------------
  5042. INT 15 - DESQview v2.26+ - "ASSERTVIR" - CONTROL 386 SCREEN VIRTUALIZATION
  5043.     AX = DE21h
  5044.     BX = new state
  5045.         0000h turn off
  5046.         nonzero turn on
  5047. Return: BX = old state of virtualization
  5048. Notes:    this API call may be made from within a hardware interrupt handler
  5049.     under DV 2.40 and 2.42, this call appears to have no effect and always
  5050.       returns a nonzero value in BX which appears to be the offset within
  5051.       the DV common memory segment of the caller's task object; it may
  5052.       only have an effect within a hardware interrupt handler
  5053. SeeAlso: AX=1117h,AX=DE17h
  5054. ----------15DE22-----------------------------
  5055. INT 15 - DESQview v2.26+ - "PROCESSMEM" - GET TASK MEMORY STATUS
  5056.     AX = DE22h
  5057.     DX = segment of task handle
  5058. Return: DX = total amount of memory in paragraphs
  5059.     BX = amount of system memory in paragraphs
  5060.     CX = largest block of system memory available in paragraphs
  5061.     AX = flags
  5062.         bit 0: system memory resides in shared memory
  5063.         1: process's memory is swapped out
  5064.         2: process's system memory is swapped out
  5065. Notes:    if the task handle is a child task, the returned values will be for the
  5066.       process containing the task, rather than the task itself
  5067.     if the process's system memory is swapped out, BX,CX,DX remain
  5068.       unchanged, because the memory usage cannot be determined
  5069. SeeAlso: AX=DE04h,AX=DE05h,AX=DE06h
  5070. ----------15DE23-----------------------------
  5071. INT 15 U - DESQview v2.31+ - ???
  5072.     AX = DE23h
  5073.     BX = ??? IRQ number on first PIC?
  5074.     CX = ??? IRQ number on second PIC?
  5075. Return: ???
  5076. Note:    called by QEMM 6.00+
  5077. ----------15DE24-----------------------------
  5078. INT 15 - DESQview v2.40+ - "XNEWPROC" - START NEW APPLICATION
  5079.     AX = DE24h
  5080.     BX = length of .DVP data
  5081.     CX = length of ??? string
  5082.     DS:SI -> ??? string
  5083.     ES:DI -> .DVP data (see AX=102Ch)
  5084. Return: BX = segment of task handle??? or 0000h on error
  5085. Note:    this call is similar to AX=102Ch except that it can interpret the
  5086.       extended DVP data
  5087. SeeAlso: AX=102Ch
  5088. ----------15DE25-----------------------------
  5089. INT 15 - DESQview v2.40+ - "GETDVPATH" - GET DESQview DIRECTORY
  5090.     AX = DE25h
  5091.     ES:DI -> 67-byte buffer for ASCIZ directory name
  5092. Return: ES:DI buffer filled with directory from which DESQview was started
  5093. BUG:    DV 2.42 does not place a terminating NUL at the end of the directory
  5094.       name, so if the buffer is not cleared to zeros before the call,
  5095.       there is no way to tell where the directory name ends.  This bug
  5096.       has been fixed in DV 2.52 (DV/X 1.02)
  5097. SeeAlso: AX=DE2Eh,INT 21/AH=47h
  5098. ----------15DE26-----------------------------
  5099. INT 15 - DESQview v2.40+ - "GETFOREGROUND" - GET KEYBOARD FOCUS
  5100.     AX = DE26h
  5101. Return: BX = segment of handle for task with keyboard focus
  5102. Note:    under DESQview/X, the X server always has the keyboard focus unless a
  5103.       "direct" window is active
  5104. SeeAlso: AX=DE2Fh,INT 2F/AX=DE0Ah
  5105. ----------15DE27-----------------------------
  5106. INT 15 - DESQview v2.50+ - "ADDINSTANCEDATA" - ADD PER-TASK SAVE/RESTORE AREA
  5107.     AX = DE27h
  5108.     BX = type
  5109.         0000h process
  5110.         0001h task
  5111.     ES:DI -> list of Instance Item Structures (see below)
  5112. Return: CF clear if successful
  5113.         AX = ???
  5114.         BX = ???
  5115.     CF set on error
  5116.         AX = ???
  5117. Note:    DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
  5118. SeeAlso: INT 2F/AX=DE08h,INT 2F/AX=DE09h
  5119.  
  5120. Format of Instance Item Structure [one element of list]:
  5121. Offset    Size    Description
  5122.  00h    WORD    length of data area DESQview should save and restore on context
  5123.         switches (0000h = end of list)
  5124.  02h    DWORD    pointer to area to be saved/restored
  5125. ----------15DE28-----------------------------
  5126. INT 15 U - DESQview v2.50+ - ???
  5127.     AX = DE28h
  5128.     BX = segment of ??? or 0000h for default
  5129.     ???
  5130. Return: ???
  5131. Note:    DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
  5132. SeeAlso: AX=DE2Ah
  5133. ----------15DE29BX0000-----------------------
  5134. INT 15 U - DESQview v2.50+ - ???
  5135.     AX = DE29h
  5136.     BX = 0000h
  5137.     ???
  5138. Return: CF clear if successful
  5139.         ???
  5140.     CF set on error
  5141. Note:    DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
  5142. ----------15DE29BX0001-----------------------
  5143. INT 15 U - DESQview v2.50+ - ???
  5144.     AX = DE29h
  5145.     BX = 0001h
  5146.     DX = segment of window handle
  5147. Return: CF clear if successful
  5148.         AX = ???
  5149.         DX = ???
  5150.     CF set on error
  5151. Note:    DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
  5152. ----------15DE29BX0002-----------------------
  5153. INT 15 U - DESQview v2.50+ - ???
  5154.     AX = DE29h
  5155.     BX = 0002h
  5156.     DX = segment of window handle
  5157. Return: CF clear if successful
  5158.         AX = ???
  5159.         DX = ???
  5160.     CF set on error
  5161. Note:    DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
  5162. ----------15DE29BX0003-----------------------
  5163. INT 15 U - DESQview v2.50+ - ???
  5164.     AX = DE29h
  5165.     BX = 0003h
  5166.     DX = segment of window handle
  5167. Return: CF clear if successful
  5168.         ???
  5169.     CF set on error
  5170. Note:    DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
  5171. ----------15DE29BX0004-----------------------
  5172. INT 15 U - DESQview v2.50+ - GET DISPLAY NAME
  5173.     AX = DE29h
  5174.     BX = 0004h
  5175.     CX = size of buffer in bytes
  5176.     DX = segment of window handle
  5177.     ES:DI -> buffer for display name
  5178. Return: CF clear if successful
  5179.         buffer filled with ASCIZ display name (truncated if necessary) or
  5180.           null string if no display
  5181.     CF set on error
  5182. Notes:    DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
  5183.     the name ":0" refers to the local display
  5184. ----------15DE29BX0005-----------------------
  5185. INT 15 U - DESQview v2.50+ - ???
  5186.     AX = DE29h
  5187.     BX = 0005h
  5188.     ???
  5189. Return: CF clear if successful
  5190.         ???
  5191.     CF set on error
  5192. Note:    DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
  5193. ----------15DE2A-----------------------------
  5194. INT 15 - DESQview v2.50+ - "DISPATCHINTAFTERDOS" - INTERRUPT ANOTHER TASK
  5195.     AX = DE2Ah
  5196.     BX = segment of handle for task to interrupt or 0000h for caller
  5197.     DX:CX -> interrupt routine
  5198.     BP,SI,DI,DS,ES as required by interrupt routine
  5199. Return: nothing
  5200. Notes:    DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
  5201.     this call is the same as AX=DE20h except that it will delay
  5202.       interrupting the specified task until after it has exited DOS
  5203. SeeAlso: AX=1021h,AX=DE20h
  5204. ----------15DE2B-----------------------------
  5205. INT 15 - DESQview v2.50+ - "OBJNEXT" - TRAVERSE OBJECT LIST
  5206.     AX = DE2Bh
  5207.     ES:DI -> starting object
  5208.         0000h:0000h for first object in list???
  5209. Return: AX = status
  5210.         0000h successful
  5211.         ES:DI -> next object of same type (window/non-window)
  5212.         0001h failed (ES:DI was not a valid handle)
  5213. Notes:    DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
  5214.     there are two separate lists, one for window/task objects and one
  5215.       for all other objects
  5216. SeeAlso: AX=1016h,AX=DE2Ah,AX=DE2Ch
  5217. ----------15DE2CDX0100-----------------------
  5218. INT 15 - DESQview v2.50+ - "WININFO" - GET WINDOW INFORMATION
  5219.     AX = DE2Ch
  5220.     DX = window information format version (0100h for DESQview 2.5x)
  5221.     BX = segment of window handle or 0000h for default
  5222.     ES:DI -> buffer for window information (see below)
  5223. Return: AX = status
  5224.         0000h successful
  5225. Note:    DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
  5226. SeeAlso: AX=1000h,AX=1016h,AX=DE01h,AX=DE2Bh
  5227.  
  5228. Format of window information:
  5229. Offset    Size    Description
  5230.  00h    BYTE    task flag: 00h window, 01h task
  5231.  01h    BYTE    process number if owner task
  5232.         00h if non-owner task
  5233.  02h    WORD    segment of owner's handle, 0000h if orphaned
  5234.  04h    WORD    mapping context
  5235.  06h    BYTE    task status (see below)
  5236.  07h    BYTE    unused
  5237.  08h    WORD    status bits
  5238.         bit 0: DESQview process
  5239.         bit 1: process swapped out
  5240.         bit 2: process is resized direct window (suspended)
  5241.         bit 3: process suspended itself
  5242.         bit 4: user suspended process
  5243.         bit 5: process is being created
  5244.         bit 6: task is freeing another task
  5245.  0Ah    BYTE    01h if foreground-only window
  5246.  
  5247. Values for task status:
  5248.  00h "Waiting" waiting for input
  5249.  01h "Idle" keyboard poll limit reached
  5250.  03h same as 01h
  5251.  04h "Pausing" INT 15/AX=1000h pause called
  5252.  04h DV/X direct: user did something to allow task switch
  5253.  05h "ModeChg" video mode about to be changed
  5254.  06h "ModeNtf" notify that video mode changed
  5255.  07h "MoniCh" requested change to other monitor
  5256.  08h "StartPgm" control relinquished to start new process
  5257.  09h "MgrCan" made window manager CANCEL command
  5258.  0Ah "Slicing" time slice expired
  5259.  0Bh "Exit DOS" notify on DOS calls
  5260.  0Ch "Enter DOS" process is re-entering DOS
  5261.  0Dh "Terminate" INT 21/AH=4Ch or task freed
  5262.  0Eh "BrkNxt" Control-Break pressed
  5263.  0Fh "MgrCol" keyboard focus taken away
  5264.  10h "PgmInt" interrupted by API call from another task
  5265.  11h "BldOpen" call to INT 15/AX=DE01h
  5266. ----------15DE2D-----------------------------
  5267. INT 15 U - DESQview v2.50+ - GET/SET SOCKET HANDLER
  5268.     AX = DE2Dh
  5269.     CX = direction
  5270.         FFFFh set socket handler
  5271.         DX:BX -> FAR function for socket interface
  5272.             must be of the format described under INT 63"DESQview"
  5273.         other get socket handler
  5274.         Return: DX:BX -> socket handler
  5275. Notes:    DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
  5276.     the "set" subfunction is normally called only by SOCKET.DVR
  5277. SeeAlso: AX=DE2Eh,INT 63"DESQview"
  5278. ----------15DE2E-----------------------------
  5279. INT 15 U - DESQview v2.50+ - SOCKET API
  5280.     AX = DE2Eh
  5281.     DX:BX -> socket record or 0000h:0000h to create a new socket record
  5282. Return: CX = size of socket record in bytes
  5283.     DX:BX -> socket record which was used
  5284. Notes:    DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
  5285.     socket records are allocated from common memory
  5286.     for Unix compatibility, each socket and connection on a socket is
  5287.       allocated a DOS file handle (referencing an SFT for NUL) which is
  5288.       used on various calls to specify which of possibly multiple
  5289.       connections is to be operated upon
  5290. SeeAlso: AX=DE2Dh,INT 63"DESQview"
  5291.  
  5292. Format of socket record:
  5293. Offset    Size    Description
  5294.  00h    WORD    signature F0ADh
  5295.  02h    WORD    function number
  5296.         0000h initialize socket???
  5297.         0001h "gethostname"
  5298.         0002h "ioctl" check for input
  5299.         0003h "sleep" delay for specified period
  5300.         0004h "htons" convert word to network (big-endian) byte order
  5301.         0005h "select"
  5302.         0006h "bsd_close"/"so_close" close socket
  5303.         0007h NOP
  5304.         0008h "connect" initiate connection on socket
  5305.         0009h "recv"/"recvfrom" read from socket
  5306.         000Ah "socket"
  5307.         000Bh ???
  5308.         000Ch "gethostbyname"
  5309.         000Dh "send"/"sendto" write to socket
  5310.         000Eh ??? (does something to all connections for process)
  5311.         000Fh "getpid" get process identifier
  5312.         0010h "gettimeofday"
  5313.         0011h "bind" assign name to socket
  5314.         0012h "listen" listen for connections on socket
  5315.         0013h "accept" accept connection on socket
  5316.         0014h connect to X server
  5317.         0015h "gethostbyaddr" get host information for an address
  5318.         0016h "getprotobyname"
  5319.         0017h "getprotobynumber"
  5320.         0018h "getservbyname"
  5321.         0019h "getservbyport"
  5322.         001Ah "getsockname" determine name bound to socket
  5323.         001Bh "getpeername" get name of connected peer
  5324.         001Ch "getsockopt"/"setsockopt"
  5325.         001Dh "so_exit"     close all sockets for calling process
  5326.         001Eh "issock" determine whether file handle references socket
  5327.         001Fh "so_attach" reattach previously detached socket
  5328.         0020h "so_detach" temporarily detach socket
  5329.         0021h get DESQview directory
  5330.         0022h "NewProc" start new application (see AX=102Ch)
  5331.         0023h "so_linkup"
  5332.         0024h canonicalize filename
  5333.         0025h indirect INT 15h call
  5334.         0026h Network Manager interface
  5335.         0027h "so_unlink"    close connection from "so_linkup"
  5336.         0028h "raisepriority"
  5337.         0029h "lowerpriority"
  5338.         002Ah ???
  5339.         FFFFh "NetExit" (appears to be a NOP)
  5340.  04h    WORD    returned error code (see below)
  5341.  06h    WORD    maximum message size??? (usually 0400h)
  5342.  08h    WORD    PSP segment to use or 0000h if socket not valid
  5343.  0Ah    WORD    scratch space (JFT size)
  5344.  0Ch    DWORD    scratch space (JFT address)
  5345.  10h    DWORD    mailbox handle (initialized by function 0000h)
  5346.  14h    DWORD    timer object handle (initialized by function 0000h)
  5347. ---function 0000h---
  5348.  18h    WORD    (return) ???
  5349. ---function 0001h---
  5350.  18h    WORD    (return) status???
  5351.  1Ah 128 BYTEs    (return) ASCIZ hostname (empty string if not on network)
  5352.  9Ah    WORD    maximum length of hostname to return
  5353. ---function 0002h---
  5354.  18h    WORD    (return) status
  5355.  1Ah    WORD    socket's file handle
  5356.  1Ch    WORD    IOCTL function
  5357.         05h "FIONREAD" determine available input
  5358.         06h "FIONBIO" set blocking state of socket
  5359.  1Eh    WORD    (return, subfn 05h) number of bytes available for reading
  5360.         (call, subfn 06h) 0000h blocking, nonzero nonblocking
  5361. ---function 0003h---
  5362.  18h  2 BYTEs    unused
  5363.  1Ah    WORD    delay time in seconds
  5364. ---function 0004h---
  5365.  18h    WORD    (return) result in network (big-endian) byte order
  5366.  1Ah    WORD    value to convert to network byte order
  5367. ---function 0005h---
  5368.  18h    WORD    (return) number of handles meeting the specified conditions???
  5369.  1Ah    WORD    number of file handles in each bitset???
  5370.  1Ch    DWORD    bitset of socket handles to check for readability???
  5371.  20h    DWORD    bitset of socket handles to check for writability???
  5372.  24h    DWORD    bitset of socket handles to check for errors???
  5373.  28h    WORD    timeout in ??? or 0000h to block until some socket ready
  5374.  2Ah    DWORD    ???
  5375.  2Eh    DWORD    ???
  5376. ---function 0006h---
  5377.  18h    WORD    (return) status: 0000h if successful, FFFFh on error
  5378.  1Ah    WORD    socket's file handle
  5379. ---function 0008h---
  5380.  18h    WORD    (return) status: 0000h if successful, FFFFh on error
  5381.  1Ah    WORD    socket's file handle
  5382.  1Ch    WORD    0001h if socket name specified, 0000h if not
  5383.  1Eh    WORD    length of socket name
  5384.  20h  N BYTEs    name of socket to which to connect
  5385. ---function 0009h---
  5386.  18h    WORD    (return) number of bytes actually read, 0000h if connection
  5387.             closed, or FFFFh on error
  5388.  1Ah    WORD    socket's file handle
  5389.  1Ch    WORD    number of bytes to read
  5390.  1Eh    WORD    flags
  5391.  20h    WORD    0000h if no source address desired
  5392.         0001h if source address is to be stored (datagram sockets)
  5393.  22h    WORD    length of source address
  5394.  24h 110 BYTEs    source address
  5395.  92h 1K BYTEs    buffer for data to be read
  5396. ---function 000Ah---
  5397.  18h    WORD    (return) socket's file handle or FFFFh on error
  5398.  1Ah    WORD    address family (0001h,0002h)
  5399.  1Ch    WORD    socket type
  5400.  1Eh    WORD    protocol
  5401. ---function 000Bh---
  5402.  18h    WORD    (return) 0001h if ??? or FFFFh on error
  5403.  1Ah    WORD    socket's file handle
  5404.  1Eh    WORD    (call) ???
  5405. ---function 000Ch---
  5406.  18h 128 BYTEs    buffer containing ASCIZ hostname
  5407.         special case if empty string or "unix"
  5408.  98h    ???    'struct hostent' ???
  5409.  A2h    ???    (return) ???
  5410. ---function 000Dh---
  5411.  18h    WORD    (return) number of bytes actually written or FFFFh on error
  5412.  1Ah    WORD    socket's file handle
  5413.  1Ch    WORD    number of bytes to write
  5414.  1Eh    WORD    number of bytes to follow in subsequent writes???
  5415.  20h    WORD    flags
  5416.  22h    WORD    0000h if no destination specified, 0001h if destination present
  5417.  24h    WORD    ???
  5418.  26h    WORD    length of destination address
  5419.  28h 110 BYTEs    destination address
  5420.  96h 1K BYTEs    buffer containing data to be written
  5421. ---function 000Eh---
  5422.  no additional fields
  5423. ---function 000Fh---
  5424.  18h    DWORD    (return) DESQview task handle of calling process
  5425. ---function 0010h---
  5426.  18h    DWORD    (return) current time
  5427.  1Ch    DWORD    (return) ???
  5428. ---function 0011h---
  5429.  18h    WORD    (return) status: 0000h if successful, FFFFh on error
  5430.  1Ah    WORD    socket's file handle
  5431.  1Ch    WORD    length of name
  5432.  1Eh  N BYTEs    buffer for socket name
  5433. ---function 0012h---
  5434.  18h    WORD    (return) status: 0000h if successful, FFFFh on error
  5435.  1Ah    WORD    socket's file handle
  5436.  1Ch    WORD    maximum backlog of pending connections allowed on socket
  5437. ---function 0013h---
  5438.  18h    WORD    (return) file handle for new connection or FFFFh on error
  5439.  1Ah    WORD    listen()ing socket's file handle
  5440.  1Ch    WORD    (call) length of buffer for connecting entity's address
  5441.         (return) actual length of address
  5442.  1Eh  N BYTEs    buffer for connecting entity's address
  5443. ---function 0014h---
  5444.  18h    WORD    (return) socket's file handle or FFFFh on error
  5445.  1Ah  4 BYTEs    (return) ???
  5446.  1Eh    WORD    (return) ???
  5447.  20h    WORD    (return) ???
  5448.  22h 256 BYTEs    ASCIZ X display name
  5449. 122h    ???
  5450. ---function 0015h---
  5451.  18h    WORD    (call) type of address??? (test for 0001h seen)
  5452.  1Ah    WORD    (call) length of buffer for host address
  5453.  1Ch 110 BYTEs    buffer containing host address
  5454.  8Ah    WORD    (return) offset of official host name???
  5455.  8Ch    WORD    (return) offset of alias list???
  5456.  8Eh    WORD    (return) address type???
  5457.  90h    WORD    (return) length of an address in bytes???
  5458.  92h    WORD    (return) offset of address???
  5459.  9Ah  N BYTEs    (return) ??? buffer for hostname, alias list, and host address
  5460. ---function 0016h---
  5461.  18h    ???    buffer for protocol name???
  5462.  98h    ???
  5463. ---function 0017h---
  5464.  18h    WORD    (call) protocol number???
  5465.  1Ah    WORD    (return) ??? or 0001h
  5466. ---function 0018h---
  5467.  18h 128 BYTEs    buffer containing ???
  5468.  98h 128 BYTEs    buffer containing ???
  5469. 118h    WORD    (return) ???
  5470. ---function 0019h---
  5471.  18h    WORD    length of name???
  5472.  1Ah 128 BYTEs    buffer for name???
  5473.  9Ah    WORD    (return) ???
  5474. ---function 001Ah---
  5475.  18h    WORD    (return) 0000h if successful, FFFFh on error
  5476.  1Ah    WORD    socket's file handle
  5477.  1Ch    WORD    (call) length of buffer for socket name
  5478.         (return) actual length of socket name
  5479.  1Eh  N BYTEs    buffer for socket name
  5480. ---function 001Bh---
  5481.  18h    WORD    (return) status: 0000h if successful, FFFFh on error
  5482.  1Ah    WORD    socket's file handle
  5483.  1Ch    WORD    (call) size of buffer for name
  5484.         (return) actual size of name
  5485.  1Eh  N BYTEs    buffer for peer's name
  5486. ---function 001Ch---
  5487.  18h    WORD    (return) status: 0000h if successful, FFFFh on error
  5488.  1Ah    WORD    direction: 0000h to get, 0001h to set
  5489.  1Ch    WORD    socket's file handle
  5490.  1Eh    WORD    option level
  5491.  20h    WORD    option name
  5492.  22h    WORD    (call) length of buffer for option value
  5493.         (return) actual length of option value
  5494.  24h  N BYTEs    buffer for option value
  5495. ---function 001Dh---
  5496.  no additional fields
  5497. ---function 001Eh---
  5498.  18h    WORD    (return) status: 0000h ??? or 0001h ???
  5499.  1Ah    WORD    file handle which may or may not be a socket
  5500. ---function 001Fh---
  5501.  18h    WORD    (return) file handle or FFFFh on error
  5502.  1Ah    DWORD    (call) pointer to Socket Context Record (see below) of a
  5503.             previously detached socket
  5504. ---function 0020h---
  5505.  18h    WORD    (return) status: 0000h if successful or FFFFh on error
  5506.  1Ah    WORD    socket's file handle
  5507.  1Ch    DWORD    (return) pointer to Socket Context Record (see below) for
  5508.             the file handle
  5509. ---function 0021h---
  5510.  18h 64 BYTEs    buffer for DESQview startup directory (see AX=DE25h)
  5511. ---function 0022h---
  5512.  18h    DWORD    (return) task handle of new application
  5513.  1Ch    WORD    size of .DVP data
  5514.  1Eh 129 BYTEs    ASCIZ ???
  5515.  9Fh  N BYTEs    .DVP data (see AX=102Ch)
  5516. ---function 0023h---
  5517.  18h    WORD    (return) ??? or FFFFh on error
  5518.  1Ah    WORD    socket's file handle???
  5519. ---function 0024h---
  5520.  18h    WORD    (return) DOS error code (see INT 21/AH=59h)
  5521.             0000h if successful
  5522.  1Ah 129 BYTEs    ASCIZ filename/pathname
  5523. 11Bh 129 BYTEs    ASCIZ canonicalized filename/pathname (see INT 21/AH=60h)
  5524. ---function 0025h---
  5525.  18h    WORD    value of AX
  5526.  1Ah    WORD    value of BX
  5527.  1Ch    WORD    (call) value of CX for call if AH value other than 12h
  5528.         (call) number of stack parameters if AH value is 12h
  5529.         (return) returned CX for calls other than INT 15/AH=12h
  5530.  1Eh    WORD    value of DX
  5531.  20h    WORD    value of DI
  5532.  22h    WORD    value of SI
  5533.  24h    WORD    value of DS
  5534.  26h    WORD    value of ES
  5535.  28h    WORD    (return) value of FLAGS after call
  5536.  2Ah  N DWORDs    (call) stack parameters for INT 15/AH=12h call
  5537.         (return) stack results from INT 15/AH=12h call
  5538. ---function 0026h---
  5539.  18h    WORD    (call) subfunction
  5540.             0004h "so_exit"???
  5541.             0005h "gethostbyname"
  5542.             0006h "gethostname"
  5543.             0009h "socket"
  5544.             000Dh "gethostbyaddr"
  5545.             000Fh "getprotobyname"
  5546.             0010h get protocol name for protocol number
  5547.             0011h "getservbyname"
  5548.             0012h "getservbyport"
  5549.             0013h "getsockname"???
  5550.             0016h ???
  5551.             0017h kill Network Manager
  5552.             0018h "getpeername"???
  5553.             0019h ??? (called by socket function 0000h)
  5554.             001Ah ???
  5555.             001Bh "so_linkup"
  5556.             001Dh get network services
  5557.             001Fh "getpwuid"
  5558.             0020h "getpwnam"
  5559.             0021h "getpwvar"
  5560.             0022h "crypt"
  5561.             0023h "so_unlink"
  5562.             0024h "getlogin"
  5563.             0028h "sethostent"
  5564.             0029h "gethostent"
  5565.             002Ah "soaddhost"
  5566.             002Bh "soupdatehost"
  5567.             002Ch "sodeletehost"
  5568.             002Dh "setservent"
  5569.             002Eh "getservent"
  5570.             002Fh "setpwent"
  5571.             0030h "getpwent"
  5572.             0031h ???
  5573.             0032h ???
  5574.             0033h ???
  5575.             0034h get IP network number
  5576.             0035h ??? (pops up Network Manager window)
  5577.             0037h ???
  5578.             0038h get machine name and IP address
  5579.             0039h ???
  5580.         (return) status???
  5581.  1Ah    WORD    (call) size of parameter data
  5582.         (return) size of returned data
  5583.  1Ch  N BYTEs    (call) parameter data required by call (see below)
  5584.         (return) result data (see below)
  5585. ---function 0027h---
  5586.  18h    WORD    (return) status: 0000h if successful, FFFFh on error
  5587.  1Ah    WORD    socket's file handle
  5588. ---functions 0028h,0029h---
  5589.  18h    WORD    (call) file handle for which to set priority low/high
  5590.             FFFFh to change calling task's priority
  5591. ---function 002Ah---
  5592.  no additional fields
  5593.  
  5594. Format of Function 0026h/Subfunction 000Fh data:
  5595. Offset    Size    Description
  5596.  00h  8 BYTEs    (return) ???
  5597.  
  5598. Format of Function 0026h/Subfunction 0010h data:
  5599. Offset    Size    Description
  5600.  00h  2 BYTEs    (return) ???
  5601.  02h    WORD    (return) protocol number
  5602.  04h    WORD    (call) protocol number for which to get name
  5603.  06h    WORD    (return) ???
  5604.  08h    var    (return) ASCIZ protocol name
  5605.  N    var    (return) ASCIZ protocol name
  5606.  
  5607. Format of Function 0026h/Subfunction 0011h data:
  5608. Offset    Size    Description
  5609.  00h  8 BYTEs    ???
  5610.  08h    var    (return) ASCIZ protocol name
  5611.     var    (return) ASCIZ ??? name
  5612.     var    (return) ASCIZ ??? name
  5613.  
  5614. Format of Function 0026h/Subfunction 0012h data:
  5615. Offset    Size    Description
  5616.  00h  8 BYTEs    (return) ???
  5617.  
  5618. Format of Function 0026h/Subfunction 0013h data:
  5619. Offset    Size    Description
  5620.  00h 116 BYTEs    (return) ???
  5621.  
  5622. Format of Function 0026h/Subfunction 0016h data:
  5623. Offset    Size    Description
  5624.  00h  4 BYTEs    (return) ???
  5625.  
  5626. Format of Function 0026h/Subfunction 0018h data:
  5627. Offset    Size    Description
  5628.  00h 116 BYTEs    (return) ???
  5629.  
  5630. Format of Function 0026h/Subfunction 0019h data:
  5631. Offset    Size    Description
  5632.  00h  4 BYTEs    (return) ???
  5633.  04h    DWORD    (return) task handle of ???
  5634.  
  5635. Format of Function 0026h/Subfunction 001Ah data:
  5636. Offset    Size    Description
  5637.  00h 38 BYTEs    (return) ???
  5638.  
  5639. Format of Function 0026h/Subfunction 001Bh data:
  5640. Offset    Size    Description
  5641.  00h 10 BYTEs    (return) ???
  5642.  
  5643. Format of Function 0026h/Subfunction 001Dh return data [array]:
  5644. Offset    Size    Description
  5645.  00h    WORD    ??? or FFFFh if end of array
  5646.  02h  7 BYTEs    ???
  5647.  09h 27 BYTEs    ASCIZ name of service
  5648.  
  5649. Format of Function 0026h/Subfunction 0024h return data:
  5650. Offset    Size    Description
  5651.  00h    var    ASCIZ username
  5652.  
  5653. Format of Function 0026h/Subfunction 0030h data:
  5654. Offset    Size    Description
  5655.  00h    WORD    (call) UID or 0000h for current user
  5656.         (return) ???
  5657.  02h    WORD    (return) UID
  5658.  04h  6 BYTEs    (return) ???
  5659.  0Ah    var    (return) ASCIZ username
  5660.     var    (return) ASCIZ encrypted password
  5661.     var    (return) ASCIZ initial ("home") directory
  5662.  
  5663. Format of Function 0026h/Subfunction 0034h data:
  5664. Offset    Size    Description
  5665.  00h  1-3 BYTEs    IP network number of caller's machine (low byte first)
  5666.  
  5667. Format of Function 0026h/Subfunction 0038h return data:
  5668. Offset    Size    Description
  5669.  00h    BYTE    ???
  5670.  01h  4 BYTEs    IP address
  5671.  05h    var    ASCIZ machine name
  5672.     ???
  5673.  
  5674. Values for error code:
  5675.  0000h successful
  5676.  0009h "BADF" bad file handle
  5677.  000Ch "ENOMEM" out of memory
  5678.  000Eh "EFAULT" bad address
  5679.  0016h "EINVAL" invalid argument
  5680.  0018h "EMFILE" too many open files
  5681.  0020h "EPIPE" ??? broken pipe
  5682.  0023h "EWOULDBLOCK" operation cannot be completed at this time
  5683.  0024h "EINPROGRESS" operation now in progress
  5684.  0026h "ENOTSOCK" socket invalid
  5685.  0028h "EMSGSIZE" message too long to send atomically
  5686.  002Ch "ESOCKTNOSUPPORT" socket type not supported
  5687.  002Fh "EAFNOSUPPORT" address family not supp. by protocol fam.
  5688.  0031h "EDOM" argument too large
  5689.  0038h "EISCONN" socket is already connected
  5690.  0039h "ENOTCONN" socket is not connected
  5691.  
  5692. Format of Socket Context Record:
  5693. Offset    Size    Description
  5694.  00h    DWORD    pointer to next Socket Context Record, 0000h:0000h if last
  5695.  04h    WORD    SFT index for socket, 00FFh if not connected, FFFFh if detached
  5696.  06h    WORD    PSP segment of owner or 0000h
  5697.  08h    WORD    mapping context of owning window
  5698.  0Ah  2 BYTEs    ???
  5699.  0Ch    WORD    address family
  5700.  0Eh    WORD    socket type
  5701.  10h    WORD    protocol
  5702.  12h    WORD    socket state
  5703.         0001h created
  5704.         0002h bound
  5705.         0003h listening???
  5706.         0005h connected
  5707.  14h    DWORD    timer object handle
  5708.  18h    DWORD    object handle (mailbox???)
  5709.  1Ch    DWORD    object handle of parent of above object or 0000h:0000h
  5710.  20h    DWORD    pointer to ??? or 0000h
  5711.  24h  6 BYTEs    ???
  5712.  2Ah    WORD    file handle for socket or FFFFh
  5713.  2Ch  2 BYTEs    ???
  5714.  2Eh    WORD    nonzero if socket nonblocking
  5715. ---network connections only---
  5716.  30h  2 BYTEs    ???
  5717.  32h    WORD    ???
  5718.  34h  4 BYTEs    IP address of remote (big-endian)
  5719.  38h  6 BYTEs    ???
  5720. ----------15DE2F-----------------------------
  5721. INT 15 - DESQview v2.50+ - "VIDEONOTIFY" - HAS DIRECT WINDOW BEEN ACTIVE?
  5722.     AX = DE2Fh
  5723. Return: BX = status
  5724.         0001h keyboard focus has been given to a direct window since the
  5725.         last call
  5726.         0000h if not
  5727. Notes:    DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
  5728.     Quarterdeck states that this call will not be available under future
  5729.       versions of DESQview Classic
  5730. ----------15DE30-----------------------------
  5731. INT 15 - DESQview v2.50+ - "GETDVXVERSION" - GET DESQview/X VERSION
  5732.     AX = DE30h
  5733. Return: BX = version (BH=major, BL=minor) or 0000h if not DESQview/X
  5734. Notes:    DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
  5735.     you must first check the DESQview version to verify that it is 2.50 or
  5736.       greater
  5737. SeeAlso: INT 21/AH=2Bh/CX=4445h
  5738. ----------15E00F-----------------------------
  5739. INT 15 - Compaq Systempro - MULTIPROCESSOR DISPATCH
  5740.     AX = E00Fh
  5741.     ES:BX -> start of 2nd processor's execution
  5742. Return: AL = 0Fh successful
  5743.        = 00h failure    
  5744. SeeAlso: AX=E10Eh,AX=E200h
  5745. ----------15E10E-----------------------------
  5746. INT 15 - Compaq Systempro - MULTIPROCESSOR END-OF-DISPATCH
  5747.     AX = E10Eh
  5748.     ES:BX -> start of 2nd processor's execution
  5749. Return: AL = 0Fh successful (halted)
  5750.        = 00h failure (not halted)
  5751. SeeAlso: AX=E00Fh,AX=E200h
  5752. ----------15E200-----------------------------
  5753. INT 15 - Compaq Systempro - MULTIPROCESSOR AVAILABLE
  5754.     AX = E200h
  5755. Return: AX = 8000h if 2nd processor available
  5756. SeeAlso: AX=E00Fh,AX=E10Eh
  5757. ----------15E4-------------------------------
  5758. INT 15 - ???
  5759.     AH = E4h
  5760.     AL = subfunction
  5761.         21h, 89h, 8Ah, 8Bh called by 386MAX v6.01
  5762.     DL = ???
  5763. Return: ???
  5764. ----------15F200CX454D-----------------------
  5765. INT 15 - Tandon memory mapper - Tandon MAPPER HARDWARE INITIALISATION CHECK ???
  5766.     AX = F200h
  5767.     CX = 454Dh
  5768. Return: CF clear if hardware already initialised
  5769.         BX = upper RAM areas in use
  5770.         bit 0: C000-C3FF
  5771.         bit 1: C400-C7FF
  5772.         ...
  5773.         bit 11: EC00-EFFF
  5774.     CF set if hardware not initialised yet
  5775. ----------1600-------------------------------
  5776. INT 16 - KEYBOARD - GET KEYSTROKE
  5777.     AH = 00h
  5778. Return: AH = BIOS scan code
  5779.     AL = ASCII character
  5780. Notes:    on extended keyboards, this function discards any extended keystrokes,
  5781.       returning only when a non-extended keystroke is available
  5782.     the BIOS scan code is usually, but not always, the same as the hardware
  5783.       scan code processed by INT 09.  It is the same for ASCII keystrokes
  5784.       and most unshifted special keys (F-keys, arrow keys, etc.), but
  5785.       differs for shifted special keys.
  5786. SeeAlso: AH=01h,AH=05h,AH=10h,AH=20h,INT 18/AH=00h
  5787. ----------1601-------------------------------
  5788. INT 16 - KEYBOARD - CHECK FOR KEYSTROKE
  5789.     AH = 01h
  5790. Return: ZF set if no keystroke available
  5791.     ZF clear if keystroke available
  5792.         AH = BIOS scan code
  5793.         AL = ASCII character
  5794. Note:    if a keystroke is present, it is not removed from the keyboard buffer;
  5795.       however, any extended keystrokes which are not compatible with 83/84-
  5796.       key keyboards are removed in the process of checking whether a
  5797.       non-extended keystroke is available
  5798. SeeAlso: AH=00h,AH=11h,AH=21h,INT 18/AH=01h
  5799. ----------1602-------------------------------
  5800. INT 16 - KEYBOARD - GET SHIFT FLAGS
  5801.     AH = 02h
  5802. Return: AL = shift flags
  5803.         bit 7: Insert active
  5804.         6: CapsLock active
  5805.         5: NumLock active
  5806.         4: ScrollLock active
  5807.         3: Alt key pressed (either Alt on 101/102-key keyboards)
  5808.         2: Ctrl key pressed (either Ctrl on 101/102-key keyboards)
  5809.         1: left shift key pressed
  5810.         0: right shift key pressed
  5811. SeeAlso: AH=12h,AH=22h,INT 18/AH=02h
  5812. ----------1603-------------------------------
  5813. INT 16 - KEYBOARD - SET TYPEMATIC RATE AND DELAY
  5814.     AH = 03h
  5815.     AL = subfunction
  5816.         00h set default delay and rate (PCjr and some PS/2)
  5817.         01h increase delay before repeat (PCjr)
  5818.         02h decrease repeat rate by factor of 2 (PCjr)
  5819.         03h increase delay and decrease repeat rate (PCjr)
  5820.         04h turn off typematic repeat (PCjr and some PS/2)
  5821.         05h set repeat rate and delay (AT,PS)
  5822.         BH = delay value (00h = 250ms to 03h = 1000ms)
  5823.         BL = repeat rate (00h=30/sec to 0Ch=10/sec [def] to 1Fh=2/sec)
  5824.         06h get current typematic rate and delay (newer PS/2s)
  5825.         Return: BL = repeat rate (see above)
  5826.             BH = delay (see above)
  5827. Note:    use INT 16/AH=09h to determine whether some of the subfunctions are
  5828.       supported
  5829. SeeAlso: INT 16/AH=09h
  5830. ----------1604-------------------------------
  5831. INT 16 - KEYBOARD - SET KEYCLICK (PCjr only)
  5832.     AH = 04h
  5833.     AL = keyclick state
  5834.         00h off
  5835.         01h on
  5836. SeeAlso: AH=03h
  5837. ----------1605-------------------------------
  5838. INT 16 - KEYBOARD - STORE KEYSTROKE IN KEYBOARD BUFFER (AT/PS w enh keybd only)
  5839.     AH = 05h
  5840.     CH = scan code
  5841.     CL = ASCII character
  5842. Return: AL = 00h if successful
  5843.          01h if keyboard buffer full
  5844. Note:    under DESQview, the following "keystrokes" invoke the following
  5845.       actions when they are read from the keyboard buffer:
  5846.         38FBh or FB00h    switch to next window (only if main menu
  5847.                 popped up)
  5848.         38FCh or FC00h    pop up DESQview main menu
  5849.         38FEh or FE00h    close the current window
  5850.         38FFh or FF00h    pop up DESQview learn menu
  5851. SeeAlso: AH=00h,AH=71h,AH=FFh,INT 15/AX=DE10h
  5852. ----------1605-------------------------------
  5853. INT 16 - KEYBOARD - SELECT KEYBOARD LAYOUT (PCjr only)
  5854.     AH = 05h
  5855.     AL = function
  5856.         01h set keyboard layout to French
  5857.         02h set keyboard layout to German
  5858.         03h set keyboard layout to Italian
  5859.         04h set keyboard layout to Spanish
  5860.         05h set keyboard layout to UK
  5861.         80h check if function supported
  5862.         Return: AL <> 80h if supported
  5863. Return: ???
  5864. Note:    called by DOS 3.2 KEYBxx.COM
  5865. SeeAlso: AH=92h,AH=A2h
  5866. ----------1609-------------------------------
  5867. INT 16 - KEYBOARD - GET KEYBOARD FUNCTIONALITY
  5868.     AH = 09h
  5869. Return: AL = keyboard functions supported
  5870.         bit 7: reserved
  5871.         bit 6: 
  5872.         bit 5:
  5873.         bit 4: INT 16/AH=0Ah supported
  5874.         bit 3: INT 16/AX=0306h supported
  5875.         bit 2: INT 16/AX=0305h supported
  5876.         bit 1: INT 16/AX=0304h supported
  5877.         bit 0: INT 16/AX=0300h supported
  5878. Note:    this function is only available if bit 6 of the second feature byte
  5879.       returned by INT 15/AH=C0h is set
  5880. SeeAlso: AH=03h,AH=0Ah,INT 15/AH=C0h
  5881. ----------160A-------------------------------
  5882. INT 16 - KEYBOARD - GET KEYBOARD ID
  5883.     AH = 0Ah
  5884. Return: BX = keyboard ID
  5885. Note:    check return value from AH=09h to determine whether this function is
  5886.       supported
  5887. SeeAlso: AH=09h
  5888. ----------1610-------------------------------
  5889. INT 16 - KEYBOARD - GET ENHANCED KEYSTROKE (enhanced kbd support only)
  5890.     AH = 10h
  5891. Return: AH = BIOS scan code
  5892.     AL = ASCII character
  5893. Notes:    if no keystroke is available, this function waits until one is placed
  5894.       in the keyboard buffer
  5895.     the BIOS scan code is usually, but not always, the same as the hardware
  5896.       scan code processed by INT 09.  It is the same for ASCII keystrokes
  5897.       and most unshifted special keys (F-keys, arrow keys, etc.), but
  5898.       differs for shifted special keys.
  5899.     unlike AH=00h, this function does not discard extended keystrokes
  5900. SeeAlso: AH=00h,AH=11h,AH=20h
  5901. ----------1611-------------------------------
  5902. INT 16 - KEYBOARD - CHECK FOR ENHANCED KEYSTROKE (enh kbd support only)
  5903.     AH = 11h
  5904. Return: ZF set if no keystroke available
  5905.     ZF clear if keystroke available
  5906.         AH = BIOS scan code
  5907.         AL = ASCII character
  5908. Notes:    if a keystroke is available, it is not removed from the keyboard buffer
  5909.     unlike AH=01h, this function does not discard extended keystrokes
  5910. SeeAlso: AH=01h,AH=10h,AH=21h
  5911. ----------1612-------------------------------
  5912. INT 16 - KEYBOARD - GET EXTENDED SHIFT STATES (enh kbd support only)
  5913.     AH = 12h
  5914. Return: AL = shift flags 1 (same as returned by AH=02h)
  5915.         bit 7: Insert active
  5916.         6: CapsLock active
  5917.         5: NumLock active
  5918.         4: ScrollLock active
  5919.         3: Alt key pressed (either Alt on 101/102-key keyboards)
  5920.         2: Ctrl key pressed (either Ctrl on 101/102-key keyboards)
  5921.         1: left shift key pressed
  5922.         0: right shift key pressed
  5923.     AH = shift flags 2
  5924.         bit 7: SysRq key pressed
  5925.         6: CapsLock pressed
  5926.         5: NumLock pressed
  5927.         4: ScrollLock pressed
  5928.         3: right Alt key pressed
  5929.         2: right Ctrl key pressed
  5930.         1: left Alt key pressed
  5931.         0: left Ctrl key pressed
  5932. Notes:    AL bit 3 set only for left Alt key on many machines
  5933.     AH bits 7 through 4 always clear on a Compaq SLT/286
  5934. SeeAlso: AH=02h,AH=22h,AH=51h
  5935. ----------1620-------------------------------
  5936. INT 16 - KEYBOARD - GET 122-KEY KEYSTROKE???
  5937.     AH = 20h
  5938. Return: ??? see AH=10h
  5939. Note:    use AH=09h to determine whether this function is supported
  5940. SeeAlso: AH=00h,AH=10h,AH=21h
  5941. ----------1621-------------------------------
  5942. INT 16 - KEYBOARD - CHECK FOR 122-KEY KEYSTROKE???
  5943.     AH = 21h
  5944. Return: ??? see AH=11h
  5945. Note:    use AH=09h to determine whether this function is supported
  5946. SeeAlso: AH=01h,AH=11h,AH=20h
  5947. ----------1622-------------------------------
  5948. INT 16 - KEYBOARD - GET 122-KEY SHIFT STATUS???
  5949.     AH = 22h
  5950. Return: ??? see AH=12h
  5951. Note:    use AH=09h to determine whether this function is supported
  5952. SeeAlso: AH=02h,AH=12h
  5953. ----------164252-----------------------------
  5954. INT 16 - TEXTCAP 2.0 - INSTALLATION CHECK
  5955.     AX = 4252h
  5956. Return: AX = 5242h if installed
  5957. Note:    TEXTCAP 2.0 is a heavily modified (by Gisbert W. Selke) version of the
  5958.       PC Magazine utility CAPTURE written by Tom Kihlken
  5959. SeeAlso: AX=4253h,AX=4254h
  5960. ----------164253-----------------------------
  5961. INT 16 - TEXTCAP 2.0 - UNINSTALL
  5962.     AX = 4253h
  5963. Return: AX = segment of resident code
  5964. Notes:    the uninstall code does not check whether interrupt vectors have been
  5965.       chained by other programs
  5966.     the caller must free the main memory block (using the returned segment)
  5967. SeeAlso: AX=4252h,AX=4254h
  5968. ----------164254-----------------------------
  5969. INT 16 - TEXTCAP 2.0 - DUMP TEXT SCREEN TO FILE
  5970.     AX = 4254h
  5971. Return: AX = status
  5972.         4254h if screen dump will be written as soon as disk becomes idle
  5973.         5442h if screen dump written
  5974. SeeAlso: AX=4252h,AX=4253h
  5975. ----------164500-----------------------------
  5976. INT 16 - Shamrock Software EMAIL - GET STATUS
  5977.     AX = 4500h
  5978.     DL = port number (01h = COM1)
  5979.     ES:BX -> 13-byte buffer for ASCIZ name
  5980. Return: AX = 4D00h if EMAIL installed on specified port
  5981.         ES:BX -> "" if no connection
  5982.           -> "*" if connection but caller has not identified name
  5983.           -> name otherwise
  5984.         CX = version (CH = major, CL = minor)
  5985.         DL = privilege level of user (00h = guest)
  5986.         DH = chosen language (00h German, 01h English)
  5987. SeeAlso: AX=4501h,AX=4502h
  5988. ----------164501-----------------------------
  5989. INT 16 - Shamrock Software EMAIL - GET ELAPSED ONLINE TIME AND MAXIMUM TIME
  5990.     AX = 4501h
  5991.     DL = port number (01h = COM1)
  5992. Return: AX = 4D00h if EMAIL installed on specified port
  5993.         BX = maximum connect time in clock ticks
  5994.         CX = maximum connect time for guests (without name) in clock ticks
  5995.         DX = elapsed connect time of current user in clock ticks
  5996. SeeAlso: AX=4500h    
  5997. ----------164502-----------------------------
  5998. INT 16 - Shamrock Software EMAIL - GET CURRENT COMMUNICATIONS PARAMETERS
  5999.     AX = 4502h
  6000.     DL = port number (01h = COM1)
  6001. Return: AX = 4D00h if EMAIL installed on specified port
  6002.         BL = current value of serial port's Line Control Register
  6003.         BH = flags
  6004.         bit 0: ISO code
  6005.             1: pause
  6006.             2: linefeed
  6007.             3: ANSI sequences
  6008.         CX = selected country code (33 = France, 49 = Germany, etc)
  6009.         DX = baudrate divisor (115200/DX = baudrate)
  6010. SeeAlso: AX=4500h
  6011. ----------164503-----------------------------
  6012. INT 16 - Shamrock Software EMAIL - SPECIFY COMMAND-WORD FOR USER FUNCTION
  6013.     AX = 4503h
  6014.     DL = port number (01h = COM1)
  6015.     DH = maximum execution time in clock ticks (00h = 5 seconds)
  6016.     ES:BX -> ASCIZ string with new user command-word
  6017. Return: AX = 4D00h if EMAIL installed on specified port
  6018. Notes:    a single user command (consisting of only uppercase letters and digits)
  6019.       may be defined, and remains valid until it is overwritten or the
  6020.       EMAIL program terminates; the user command must be activated by
  6021.       calling AX=4504h at least once.
  6022.     an existing command word may be redefined with this function
  6023. SeeAlso: AX=4504h,AX=4505h
  6024. ----------164504-----------------------------
  6025. INT 16 - Shamrock Software EMAIL - CHECK FOR USER FUNCTION COMMAND-WORD
  6026.     AX = 4504h
  6027.     DL = port number (01h = COM1)
  6028.     ES:BX -> 80-byte buffer for ASCIZ user input line
  6029. Return: AX = 4D00h if EMAIL installed on specified port
  6030.         DL = flags
  6031.         bit 0: user function supported (always set)
  6032.             1: user entered user-function command word
  6033.         if DL bit 1 set,
  6034.         ES:BX buffer contains line entered by user which begins with
  6035.             the defined command word and has been converted to all
  6036.             caps
  6037. Note:    caller must process the returned commandline and invoke AX=4505h
  6038.       within five seconds with the result of that processing
  6039. SeeAlso: AX=4503h,AX=4505h
  6040. ----------164505-----------------------------
  6041. INT 16 - Shamrock Software EMAIL - SEND RESULT OF USER FUNCTION
  6042.     AX = 4505h
  6043.     DL = port number (01h = COM1)
  6044.     DH = error flag
  6045.         bit 3: set on error
  6046.     ES:BX -> ASCIZ text to return to user, max 1024 bytes
  6047. Return: AH = 4Dh if EMAIL installed on specified port
  6048.     AL = status
  6049.         00h successful
  6050.         02h unable to perform function (timeout, prev call not complete)
  6051.         other error
  6052. Notes:    if the error flag in DH is set, the string is not sent and an error
  6053.       message is generated instead; if this function is not called within
  6054.       five seconds of AX=4504h, EMAIL automatically generates an error
  6055.       message
  6056.     the string is copied into an internal buffer, allowing this function's
  6057.       caller to continue immediately
  6058. SeeAlso: AX=4503h,AX=4504h,INT 17/AX=2400h
  6059. ----------164506-----------------------------
  6060. INT 16 - Shamrock Software EMAIL - MONITOR XMODEM DOWNLOAD
  6061.     AX = 4506h
  6062.     DL = port number (01h = COM1)
  6063.     ES:BX -> 13-byte buffer for ASCIZ filename
  6064. Return: AX = 4D00h if EMAIL installed on specified port
  6065.         DH = Xmodem status
  6066.         00h no XGET command given
  6067.         01h XGET in progress
  6068.         02h XGET completed successfully
  6069.         ES:BX buffer filled with last filename given to XGET command
  6070.         (without path)
  6071. Note:    DH=02h will only be returned once per XGET; subsequent calls will
  6072.       return DH=00h
  6073. SeeAlso: AX=4500h,INT 17/AX=2408h
  6074. ----------165000-----------------------------
  6075. INT 16 - KEYBOARD - AX PC - SET KEYBOARD COUNTRY CODE
  6076.     AX = 5000h
  6077.     BX = country code
  6078.         0001h USA (English), 0051h Japan
  6079. Return: AL = status
  6080.         00h successful
  6081.         01h bad country code
  6082.         02h other error
  6083. SeeAlso: AX=5001h,INT 10/AX=5000h,INT 17/AX=5000h
  6084. ----------165001-----------------------------
  6085. INT 16 - KEYBOARD - AX PC - GET KEYBOARD COUNTRY CODE
  6086.     AX = 5001h
  6087. Return: AL = status
  6088.         00h successful
  6089.         BX = country code
  6090.         02h error
  6091. SeeAlso: AX=5000h,INT 10/AX=5001h,INT 17/AX=5001h
  6092. ----------1651-------------------------------
  6093. INT 16 - KEYBOARD - AX PC - READ SHIFT KEY STATUS
  6094.     AH = 51h
  6095. Return: AL = standard shift key states (see AH=12h)
  6096.     AH = Kana lock (00h off, 01h on)
  6097. SeeAlso: AH=02h,AH=12h,AH=22h
  6098. ----------165500-----------------------------
  6099. INT 16 - Microsoft Word internal - MICROSOFT WORD COOPERATION WITH TSR
  6100.     AX = 5500h
  6101. Return: AX = 4D53h ('MS') if keyboard TSR present
  6102. Notes:    during startup, Microsoft Word tries to communicate with any TSRs
  6103.       that are present through this call.
  6104.     if the return is not 4D53h, Word installs its own INT 09 and INT 16
  6105.       handlers; otherwise it assumes that the TSR will handle the keyboard
  6106. SeeAlso: INT 1A/AX=3601h
  6107. ----------1655FF-----------------------------
  6108. INT 16 - Swap Utilities - ???
  6109.     AX = 55FFh
  6110.     BX >= 0004h
  6111.     CX = function
  6112.         0000h set ??? flag
  6113.         other clear ??? flag
  6114. Note:    present in SWAPSH and SWAPDT v1.77j, distributed with PC Tools 7
  6115. ----------166969BX6968-----------------------
  6116. INT 16 - PC Tools v5.1+ BACKTALK - UNHOOK
  6117.     AX = 6969h
  6118.     BX = 6968h
  6119. Return: resident code unhooked, but not removed from memory
  6120. ----------166969BX6969-----------------------
  6121. INT 16 - PC Tools v5.1+ BACKTALK - INSTALLATION CHECK
  6122.     AX = 6969h
  6123.     BX = 6969h
  6124.     DX = 0000h
  6125. Return: DX nonzero if installed
  6126.         BX = CS of resident code
  6127.         DX = PSP segment of resident code
  6128.         DS:SI -> ASCIZ identification string "CPoint Talk"
  6129. ----------166F00BX0000-----------------------
  6130. INT 16 - HP Vectra - ??? - INSTALLATION CHECK
  6131.     AX = 6F00h
  6132.     BX = 0000h
  6133. Return: BX = 4850h if present
  6134. Note:    called by recent MS Mouse drivers
  6135. ----------166F0D-----------------------------
  6136. INT 16 - HP Vectra - ???
  6137.     AX = 6F0Dh
  6138.     ???
  6139. Return: ???
  6140. Note:    called by MS Windows HPSYSTEM.DRV and HPEBIOS.386
  6141. SeeAlso: AX=6F0Eh
  6142. ----------166F0E-----------------------------
  6143. INT 16 - HP Vectra - ???
  6144.     AX = 6F0Eh
  6145.     ???
  6146. Return: ???
  6147. Note:    called by MS Windows HPSYSTEM.DRV and HPEBIOS.386
  6148. SeeAlso: AX=6F0Dh
  6149. ----------1670-------------------------------
  6150. INT 16 - FAKEY.COM - INSTALLATION CHECK
  6151.     AH = 70h
  6152. Return: AX = 1954h if installed
  6153. Note:    FAKEY is a keystroke faking utility by System Enhancement Associates
  6154. ----------1671-------------------------------
  6155. INT 16 - FAKEY.COM - PUSH KEYSTROKES
  6156.     AH = 71h
  6157.     CX = number of keystrokes
  6158.     DS:SI -> array of words containing keystrokes to be returned by AH=00h
  6159. Note:    FAKEY is a keystroke faking utility by System Enhancement Associates
  6160. SeeAlso: AH=05h,AH=72h
  6161. ----------1672-------------------------------
  6162. INT 16 - FAKEY.COM - CLEAR FAKED KEYSTROKES
  6163.     AH = 72h
  6164. Note:    FAKEY is a keystroke faking utility by System Enhancement Associates
  6165. SeeAlso: AH=71h
  6166. ----------1673-------------------------------
  6167. INT 16 - FAKEY.COM - PLAY TONES
  6168.     AH = 73h
  6169.     CX = number of tones to play
  6170.     DS:SI -> array of tones (see below)
  6171. Note:    FAKEY is a keystroke faking utility by System Enhancement Associates
  6172. SeeAlso: INT 15/AX=1019h
  6173.  
  6174. Format of tone array entries:
  6175. Offset    Size    Description
  6176.  00h    WORD    divisor for timer channel 2
  6177.  02h    WORD    duration in clock ticks
  6178. ----------1675-------------------------------
  6179. INT 16 - pcANYWHERE III - SET TICK COUNT FOR SCANNING
  6180.     AH = 75h
  6181.     AL = number of ticks between checks for new screen changes
  6182. ----------1676-------------------------------
  6183. INT 16 - pcANYWHERE III - SET ERROR CHECKING TYPE
  6184.     AH = 76h
  6185.     AL = error checking type
  6186.         00h none
  6187.         01h fast
  6188.         02h slow
  6189. ----------1677-------------------------------
  6190. INT 16 - pcANYWHERE III - LOG OFF
  6191.     AH = 77h
  6192.     AL = mode
  6193.         00h wait for another call
  6194.         01h leave in Memory Resident Mode
  6195.         02h leave in Automatic Mode
  6196.         FFh leave in current operating mode
  6197. ----------167761-----------------------------
  6198. INT 16 - WATCH.COM v2.x-v3.0 - INSTALLATION CHECK
  6199.     AX = 7761h ('wa')
  6200. Return: AX = 5741h ('WA') if installed
  6201. Note:    WATCH.COM is part of the "TSR" package by Kim Kokkonen
  6202. SeeAlso: INT 21/AX=7761h
  6203. ----------167788BX7789-----------------------
  6204. INT 16 - PC Magazine PUSHDIR.COM - INSTALLATION CHECK
  6205.     AX = 7788h
  6206.     BX = 7789h
  6207.     DS:SI -> signature "PUSHDIR VERSION 1.0"
  6208. Return: AX = 7789h if installed and signature correct
  6209.     BX = 7788h
  6210.     SI destroyed          
  6211. ----------1679-------------------------------
  6212. INT 16 - pcANYWHERE III - CHECK STATUS
  6213.     AH = 79h
  6214. Return: AX = status
  6215.         FFFFh if resident and active
  6216.         FFFEh if resident but not active
  6217.         FFFDh if in Memory Resident mode
  6218.         FFFCh if in Automatic mode
  6219.         other value if not resident
  6220. SeeAlso: AX=7B00h,INT 21/AX=2B44h
  6221. ----------167A-------------------------------
  6222. INT 16 - pcANYWHERE III - CANCEL SESSION
  6223.     AH = 7Ah
  6224. ----------167B00-----------------------------
  6225. INT 16 - pcANYWHERE III - SUSPEND
  6226.     AX = 7B00h
  6227. SeeAlso: AH=79h,AX=7B01h
  6228. ----------167B01-----------------------------
  6229. INT 16 - pcANYWHERE III - RESUME
  6230.     AX = 7B01h
  6231. SeeAlso: AH=79h,AX=7B00h
  6232. ----------167C-------------------------------
  6233. INT 16 - pcANYWHERE III - GET PORT CONFIGURATION
  6234.     AH = 7Ch
  6235. Return: AH = port number
  6236.     AL = baud rate
  6237.         00h = 50 baud
  6238.         01h = 75 baud
  6239.         02h = 110 baud
  6240.         03h = 134.5 baud
  6241.         04h = 150 baud
  6242.         05h = 300 baud
  6243.         06h = 600 baud
  6244.         07h = 1200 baud
  6245.         08h = 1800 baud
  6246.         09h = 2000 baud
  6247.         0Ah = 2400 baud
  6248.         0Bh = 4800 baud
  6249.         0Ch = 7200 baud
  6250.         0Dh = 9600 baud
  6251.         0Eh = 19200 baud
  6252. ----------167D-------------------------------
  6253. INT 16 - pcANYWHERE III - GET/SET TERMINAL PARAMETERS
  6254.     AH = 7Dh
  6255.     AL = subfunction
  6256.         00h set terminal parameters
  6257.         01h get terminal parameters
  6258.         02h get configuration header and terminal parameters
  6259.     DS:CX -> terminal parameter block
  6260. ----------167E-------------------------------
  6261. INT 16 - pcANYWHERE III - COMMUNICATIONS I/O THROUGH PORT
  6262.     AH = 7Eh
  6263.     AL = subfunction
  6264.         01h port input status
  6265.         Return AX = 0 if no characer ready,
  6266.                AX = 1 if character ready
  6267.         02h port input character
  6268.         Return AL = received character
  6269.         03h port output character in CX
  6270.         11h hang up phone
  6271. ----------167F-------------------------------
  6272. INT 16 - pcANYWHERE III - SET KEYBOARD/SCREEN MODE
  6273.     AH = 7Fh
  6274.     AL = subfunction
  6275.         00h enable remote keyboard only
  6276.         01h enable host keyboard only
  6277.         02h enable both keyboards
  6278.         08h display top 24 lines
  6279.         09h display bottom 24 lines
  6280.         10h Hayes modem
  6281.         11h other modem
  6282.         12h direct connect
  6283. ----------1680-------------------------------
  6284. INT 16 - MAKEY.COM - INSTALLATION CHECK
  6285.     AH = 80h
  6286. Return: AX = 1954h if installed
  6287. Note:    MAKEY is a utility by System Enhancement Associates
  6288. ----------168765BX4321-----------------------
  6289. INT 16 - AT.COM version 8/26/87 - API
  6290.     AX = 8765h
  6291.     BX = 4321h
  6292.     CX = ??? or FFFFh
  6293.     if CX = FFFFh
  6294.         DX = number of event to remove or FFFFh
  6295. Return: ES:BX -> event record array
  6296. Note:    AT.COM is a resident scheduler by Bill Frolik
  6297.  
  6298. Format of event record:
  6299. Offset    Size    Description
  6300.  00h    BYTE    in-use flag (00h free, 01h in use, FFh end of array)
  6301.  01h    BYTE    day of date on which to trigger
  6302.  02h    BYTE    month of date on which to trigger
  6303.  03h    BYTE    trigger time, minute
  6304.  04h    BYTE    trigger time, hour
  6305.  05h    WORD    offset of command to be executed
  6306. ----------1692-------------------------------
  6307. INT 16 - ???
  6308.     AH = 92h
  6309. Return: AH <= 80h if ???
  6310. Note:    called by DOS 3.2 KEYBxx.COM and DOS 5.0 KEYB.COM
  6311. SeeAlso: AH=05h"PCjr",AH=A2h
  6312. ----------1699-------------------------------
  6313. INT 16 - SCOUT v5.4 - GET ???
  6314.     AH = 99h
  6315. Return: AX = ABCDh
  6316.     BX:CX -> ??? (appears to be start of PSP for resident portion)
  6317. Note:    Scout is a memory-resident file manager by New-Ware
  6318. SeeAlso: AH=9Eh
  6319. ----------169E-------------------------------
  6320. INT 16 - SCOUT v5.4 - INSTALLATION CHECK
  6321.     AH = 9Eh
  6322. Return: AX = ABCDh if installed
  6323. Note:    Scout is a memory-resident file manager by New-Ware
  6324. SeeAlso: AH=99h
  6325. ----------16A2-------------------------------
  6326. INT 16 - ???
  6327.     AH = A2h
  6328. Return: AH <= 80h if ???
  6329. Note:    this function is called by DOS 5.0 KEYB.COM
  6330. SeeAlso: AH=92h
  6331. ----------16AA-------------------------------
  6332. INT 16 - PTxxx.COM - (xxx=CGA,EGA,VGA,HER...) CALL GATE FOR GRAPHICS
  6333.     AH = AAh
  6334.     Various registers set up by high level language.
  6335. Return: Graphics performed
  6336. Note:    PT stands for Paint Tools which is a graphics library for Turbo Pascal,
  6337.       Modula 2 and others from DataBiten in Sweden. The library is
  6338.       installed as a memory resident driver.
  6339. ----------16CA--BX736B-----------------------
  6340. INT 16 - CtrlAlt Associates STACKEY.COM v3.00 - API
  6341.     AH = CAh
  6342.     BX = 736Bh ("sk")
  6343.     CX = 736Bh
  6344.     AL = function
  6345.         00h installation check
  6346.         Return: DX = words available in keyboard buffer
  6347.         01h place keystroke in buffer
  6348.         DX = keystroke (DH = scan code, DL = ASCII character)
  6349.         Return: DX = words available in keyboard buffer
  6350.                 FFFFh on error
  6351.         02h flush STACKEY and BIOS keyboard buffers
  6352. Return: AX = CAFFh if installed
  6353.         BX = segment of resident code
  6354.         CX = STACKEY version (CH = major, CL = minor)
  6355. Note:    STACKEY is a shareware keyboard-input faking TSR
  6356. ----------16CA00BX6570-----------------------
  6357. INT 16 - CtrlAlt Associates EGAPAL.COM v1.00 - INSTALLATION CHECK
  6358.     AX = CA00h
  6359.     BX = 6570h ("ep")
  6360.     CX = 6570h
  6361. Return: AX = CAFFh if installed
  6362.         BX = segment of resident code
  6363.         CX = ??? (0090h)
  6364. Note:    EGAPAL is a TSR supplied with STACKEY which makes EGA palette settings
  6365.       permanent across mode switches
  6366. SeeAlso: AX=CA00h/BX=7670h
  6367. ----------16CA00BX7670-----------------------
  6368. INT 16 - CtrlAlt Associates VGAPAL.COM v1.00 - INSTALLATION CHECK
  6369.     AX = CA00h
  6370.     BX = 7670h ("vp")
  6371.     CX = 7670h
  6372. Return: AX = CAFFh if installed
  6373.         BX = segment of resident code
  6374.         CX = ??? (0090h)
  6375. Note:    VGAPAL is a TSR supplied with STACKEY which makes VGA palette settings
  6376.       permanent across mode switches
  6377. SeeAlso: AX=CA00h/BX=6570h
  6378. ----------16E0E0-----------------------------
  6379. INT 16 - TurboPower TSRs - ALTERNATE INSTALLATION CHECK
  6380.     AX = E0E0h
  6381. Return: AX = 1F1Fh if installed
  6382.         DWORD 0040h:00F0h -> last data block in TSR list (see AX=F0F0h)
  6383. Note:    the returned TSR list provides support for communication among TSRs
  6384.       built with TurboPower's Turbo Professional and Object Professional
  6385.       libraries for Turbo Pascal
  6386. SeeAlso: AX=F0F0h
  6387. ----------16ED--BHED-------------------------
  6388. INT 16 - BORLAND TURBO LIGHTNING - API
  6389.     AH = EDh
  6390.     BH = EDh
  6391.     BL = function
  6392.         00h installation check
  6393.         Return: AX = 5205h
  6394.             CH = major version
  6395.             CL = minor version
  6396.         01h ???
  6397.         02h get resident CS
  6398.         Return: AX = code segment of resident portion
  6399.         03h get resident ???
  6400.         Return: AX = offset of some buffer in resident code seg
  6401.         04h ???
  6402.         05h set ???
  6403.         AL = 0 to 0Ch
  6404.         Return: AX = status
  6405.                 0000h if OK
  6406.                 0001h if out of range.
  6407.         06h ???
  6408.         07h ???
  6409.         08h ???
  6410.         AL = char???
  6411.         CX = ???
  6412.         DX = ???
  6413.         Return: AX = 0, 1 or 2
  6414.         09h ???
  6415.         0Ah ???
  6416.         CX = ???
  6417.         DX = ???
  6418.         Return: AX = ???
  6419.         0Bh ???
  6420.         DS:SI -> ???
  6421.         Return: AX = 0, 40h, 80h
  6422.         0Ch ???
  6423.         DS:SI -> ???
  6424.         Return: AH = 0
  6425.             AL = ???
  6426.         0Dh set ???
  6427.         (sets an internal flag)
  6428.         0Eh ???
  6429.         DS:SI -> ???
  6430.         Return: AX = 0, 1 or 2.
  6431.         0Fh ???
  6432.         10h ???
  6433. Notes:    AX in general returns an error code from most functions.
  6434. ----------16F0-------------------------------
  6435. INT 16 - Compaq 386 - SET CPU SPEED
  6436.     AH = F0h
  6437.     AL = speed
  6438.         00h equivalent to 6 MHz 80286 (COMMON)
  6439.         01h equivalent to 8 MHz 80286 (FAST)
  6440.         02h full 16 MHz (HIGH)
  6441.         03h toggles between 8 MHz-equivalent and speed set by system board
  6442.         switch (AUTO or HIGH)
  6443.         08h full 16 MHz except 8 MHz-equivalent during floppy disk access
  6444.         09h specify speed directly
  6445.         CX = speed value, 1 (slowest) to 50 (full), 3 ~= 8088
  6446. SeeAlso: AH=F1h,AH=F3h
  6447. ----------16F0F0-----------------------------
  6448. INT 16 - TurboPower TSRs - INSTALLATION CHECK
  6449.     AX = F0F0h
  6450. Return: AX = 0F0Fh if installed
  6451.         ES:DI -> last data block in TSR list
  6452. Note:    the returned TSR list provides support for communication among TSRs
  6453.       built with TurboPower's Turbo Professional and Object Professional
  6454.       libraries for Turbo Pascal
  6455. SeeAlso: AX=E0E0h
  6456.  
  6457. Format of data block:
  6458. Offset    Size    Description
  6459.  00h    DWORD    pointer to program tag (counted ASCII string)
  6460.  04h    WORD    interface version number (0400h)
  6461.  06h    DWORD    pointer to command entry point
  6462.  0Ah    DWORD    pointer to previous data block (0000h:0000h if none)
  6463.  0Eh    DWORD    pointer to next data block (0000h:0000h if none)
  6464. ---swappable TSRs only---
  6465.  12h    DWORD    pointer to swapping data
  6466.  16h    DWORD    pointer to user data
  6467.     more???
  6468. ----------16F1-------------------------------
  6469. INT 16 - Compaq 386 - READ CURRENT CPU SPEED
  6470.     AH = F1h
  6471. Return:    AL = speed code (see AH=F0h)
  6472.          if AL = 09h, CX = speed code
  6473. SeeAlso: AH=F0h,AH=F3h
  6474. ----------16F2-------------------------------
  6475. INT 16 - Compaq 386 - DETERMINE ATTACHED KEYBOARD TYPE
  6476.     AH = F2h
  6477. Return: AL = type
  6478.         00h if 11-bit AT keyboard is in use
  6479.         01h if 9-bit PC keyboard is in use 
  6480. ----------16F3-------------------------------
  6481. INT 16 - Compaq 80286s - SET CPU SPEED LIMIT (OVERRIDE JUMPER)
  6482.     AH = F3h
  6483.     AL = 00h limit is 6 Mhz
  6484.        = 01h limit is 8 Mhz/6 Mhz
  6485. SeeAlso: AH=F0h,AH=F1h
  6486. ----------16F398-----------------------------
  6487. INT 16 U - NORTON GUIDES - INSTALLATION CHECK
  6488.     AX = F398h
  6489. Return: AX = 6A73h ("js")
  6490.     BH = scan code of current hot key
  6491.     BL = ASCII code of current hot key
  6492. Note:    NG.EXE was written by John Socha
  6493. ----------16F400-----------------------------
  6494. INT 16 - Compaq Systempro - CACHE CONTROLLER STATUS
  6495.     AX = F400h
  6496. Return: AH = E2h
  6497.     AL = status
  6498.         00h not present
  6499.         01h enabled
  6500.         02h disabled
  6501. SeeAlso: AX=F401h,AX=F402h
  6502. ----------16F401-----------------------------
  6503. INT 16 - Compaq Systempro - ENABLE CACHE CONTROLLER
  6504.     AX = F401h
  6505. Return: AX = E201h
  6506. SeeAlso: AX=F400h,AX=F402h
  6507. ----------16F402-----------------------------
  6508. INT 16 - Compaq Systempro - DISABLE CACHE CONTROLLER
  6509.     AX = F402h
  6510. Return: AX = E202h
  6511. SeeAlso: AX=F400h,AX=F401h
  6512. ----------16FA00DX5945-----------------------
  6513. INT 16 U - PC Tools v8+ VSAFE, VWATCH - INSTALLATION CHECK???
  6514.     AX = FA00h
  6515.     DX = 5945h
  6516. Return: CF clear
  6517.     DI = 4559h
  6518.     BX = ??? (2F00h or FFFFh) (VSAFE only)
  6519. SeeAlso: INT 13/AH=FAh,INT 21/AH=FAh"VDEFEND",INT 2F/AX=6282h
  6520. ----------16FA01DX5945-----------------------
  6521. INT 16 U - PC Tools v8+ VSAFE, VWATCH - UNINSTALL
  6522.     AX = FA01h
  6523.     DX = 5945h
  6524. Return: CF clear if successful
  6525.     FI = 4559h
  6526. SeeAlso: AX=FA00h
  6527. ----------16FA02DX5945-----------------------
  6528. INT 16 U - PC Tools v8+ VSAFE, VWATCH - ???
  6529.     AX = FA02h
  6530.     DX = 5945h
  6531.     BL = ???
  6532. Return: CF clear
  6533.     DI = 4559h
  6534.     CL = old value of ???
  6535. ----------16FA03DX5945-----------------------
  6536. INT 16 U - PC Tools v8+ VSAFE, VWATCH - ???
  6537.     AX = FA03h
  6538.     DX = 5945h
  6539. Return: CF clear
  6540.     DI = 4559h
  6541.     AX = 0002h
  6542. ----------16FA04DX5945-----------------------
  6543. INT 16 U - PC Tools v8+ VSAFE - GET ???
  6544.     AX = FA04h
  6545.     DX = 5945h
  6546. Return: CF clear
  6547.     DI = 4559h
  6548.     BL = ???
  6549. Note:    this function is a NOP under VWATCH
  6550. SeeAlso: AX=FA05h
  6551. ----------16FA05DX5945-----------------------
  6552. INT 16 U - PC Tools v8+ VSAFE - SET ???
  6553.     AX = FA05h
  6554.     DX = 5945h
  6555.     BL = ???
  6556. Return: CF clear
  6557.     DI = 4559h
  6558. Note:    this function is a NOP under VWATCH
  6559. SeeAlso: AX=FA04h
  6560. ----------16FA06DX5945-----------------------
  6561. INT 16 U - PC Tools v8+ VSAFE, VWATCH - GET ???
  6562.     AX = FA06h
  6563.     DX = 5945h
  6564. Return: CF clear
  6565.     DI = 4559h
  6566.     BL = ???
  6567. SeeAlso: AX=FA07h
  6568. ----------16FA07DX5945-----------------------
  6569. INT 16 U - PC Tools v8+ VSAFE, VWATCH - SET ???
  6570.     AX = FA07h
  6571.     DX = 5945h
  6572.     BL = ???
  6573. Return: CF clear
  6574.     DI = 4559h
  6575. SeeAlso: AX=FA00h,AX=FA06h
  6576. ----------16FE55-----------------------------
  6577. INT 16 U - PC Tools v8+ DATAMON, DRIVEMAP, CPSCHED, CPTASK - ???
  6578.     AX = FE55h
  6579.     CX = ???
  6580.     DX = ???
  6581.     ???
  6582. Return: DX:AX -> ???
  6583. ----------16FEA4-----------------------------
  6584. INT 16 U - PC Tools v7+ CPSCHED/DESKTOP - ???
  6585.     AX = FEA4h
  6586.     ???
  6587. Return: ???
  6588. Note:    this function is identical to AX=FFD3h, and is implemented by the same
  6589.       code in DESKTOP
  6590. SeeAlso: AX=FFA4h
  6591. ----------16FEC6-----------------------------
  6592. INT 16 U - PC Tools v7+ CPSCHED - ???
  6593.     AX = FEC6h
  6594.     DL = ???
  6595.     ???
  6596. Return: ???
  6597. ----------16FED3-----------------------------
  6598. INT 16 U - PC Tools v7+ CPSCHED/DESKTOP - ???
  6599.     AX = FED3h
  6600.     DS:SI -> 92-byte data record for ???
  6601. Return: ???
  6602. Note:    this function is identical to AX=FFD3h, and is implemented by the same
  6603.       code in DESKTOP
  6604. SeeAlso: AX=FFD3h
  6605. ----------16FEDC-----------------------------
  6606. INT 16 U - PC Tools v7+ CPSCHED - ???
  6607.     AX = FEDCh
  6608.     ???
  6609. Return: ???
  6610. ----------16FEEFCX0000-----------------------
  6611. INT 16 U - PC Tools v7+ CPSCHED/DESKTOP - INSTALLATION CHECK
  6612.     AX = FEEFh
  6613.     CX = 0000h
  6614. Return: CX = ABCDh if PC Tools scheduler (CPSCHED or DESKTOP) installed
  6615.         BX = segment of resident portion
  6616. Note:    this function is identical to AX=FFD3h, and is implemented by the same
  6617.       code in DESKTOP
  6618. SeeAlso: AX=FFEFh
  6619. ----------16FEF1-----------------------------
  6620. INT 16 U - PC Tools v7 only CPSCHED/DESKTOP - ALTERNATE INSTALLATION CHECK
  6621.     AX = FEF1h
  6622.     BX = ???
  6623. Return: CX = 5555h if PC Tools scheduler (CPSCHED or DESKTOP) installed
  6624.     DX = 5555h
  6625. Note:    this function is identical to AX=FFD3h, and is implemented by the same
  6626.       code in DESKTOP
  6627. SeeAlso: AX=FFF1h
  6628. ----------16FF-------------------------------
  6629. INT 16 - KEYBOARD - KBUF extensions - ADD KEY TO TAIL OF KEYBOARD BUFFER
  6630.     AH = FFh
  6631.     DX = scan code
  6632. Return: AL = status
  6633.         00h success
  6634.         01h failure
  6635. Note:    KBUF is a keyboard buffer expander by Mark Adler
  6636. SeeAlso: AH=05h
  6637. ----------16FF-------------------------------
  6638. INT 16 - OPTIMA 1024 VGA-Sync - QUERY ZOOM INTERRUPT
  6639.     AH = FFh
  6640. Return: AL = interrupt number to which BIOS keyboard handler has been relocated
  6641.     AL+1 = Zoom interrupt number
  6642.     BX = hotkey
  6643. Note:    The default interrupts are 60h for keyboard and 61h for Zoom interrupt;
  6644.       the default hot key is F10
  6645. SeeAlso: INT 60"OPTIMA"
  6646. ----------16FF70-----------------------------
  6647. INT 16 U - PC Tools v8+ DRIVEMAP - API???
  6648.     AX = FF70h
  6649.     BX = function (0000h-0002h)
  6650.     ???
  6651. Return: ???
  6652. BUG:    this call will branch to random locations on BX=0003h-5CD6h under v8.0
  6653.       due to range-testing the wrong register
  6654. SeeAlso: INT 2F/AH=92h"DRIVEMAP"
  6655. ----------16FF80-----------------------------
  6656. INT 16 U - PC Tools v8+ CPTASK - API
  6657.     AX = FF80h
  6658.     BX = function (0000h-0009h or 4350h ['CP'])
  6659.     ???
  6660. Return: ???
  6661. ----------16FF90-----------------------------
  6662. INT 16 U - PC Tools v8+ DESKTOP - ???
  6663.     AX = FF90h
  6664.     ???
  6665. Return: ???
  6666. Note:    available only when popped up
  6667. ----------16FF91-----------------------------
  6668. INT 16 U - PC Tools v7+ DESKTOP - ???
  6669.     AX = FF91h
  6670.     ???
  6671. Return: AX = 0000h
  6672. Note:    calls AX=FFFDh after ???
  6673. SeeAlso: AX=FF92h,AX=FFFDh
  6674. ----------16FF92-----------------------------
  6675. INT 16 U - PC Tools v7+ DESKTOP - ???
  6676.     AX = FF92h
  6677.     ???
  6678. Return: AX = 0000h
  6679. Note:    like AX=FF91h, but temporarily sets ??? to 3
  6680. SeeAlso: AX=FF91h,AX=FF92h
  6681. ----------16FF93-----------------------------
  6682. INT 16 U - PC Tools v7+ DESKTOP - SET ??? FLAG
  6683.     AX = FF93h
  6684. ----------16FF94-----------------------------
  6685. INT 16 U - PC Tools v7+ DESKTOP - SET ???
  6686.     AX = FF94h
  6687.     CX = ??? (default 0017h)
  6688. ----------16FF95-----------------------------
  6689. INT 16 U - PC Tools v7+ DESKTOP - SET ???
  6690.     AX = FF95h
  6691.     BX = ???
  6692. ----------16FF96-----------------------------
  6693. INT 16 U - PC Tools v7+ DESKTOP - ???
  6694.     AX = FF96h
  6695.     CL = ???
  6696. Return: AX = ???
  6697. ----------16FF97-----------------------------
  6698. INT 16 U - PC Tools v7+ DESKTOP - ???
  6699.     AX = FF97h
  6700.     DS:DX -> buffer for ??? (see below)
  6701. Return: ???
  6702.  
  6703. Format of buffer:
  6704. Offset    Size    Description
  6705.  00h 48 BYTEs    ???
  6706.  30h 128 BYTEs    ???
  6707. ----------16FF98-----------------------------
  6708. INT 16 U - PC Tools v7+ DESKTOP - OPEN \DESK.OVL FILE AND SEEK TO OVERLAY
  6709.     AX = FF98h
  6710.     DX = byte offset in file of overlay header
  6711. Return: BX = file handle for DESK.OVL file
  6712. Desc:    open the DESK.OVL file, seek to the specified offset, read in the
  6713.       overlay header, and seek to the offset specified by the header
  6714.  
  6715. Format of overlay header:
  6716. Offset    Size    Description
  6717.  00h 12 BYTEs    NUL-padded ASCII overlay filename
  6718.  0Ch    DWORD    offset within DESK.OVL file of actual overlay
  6719. ----------16FF99-----------------------------
  6720. INT 16 U - PC Tools v7+ DESKTOP - ???
  6721.     AX = FF99h
  6722.     ???
  6723. Return: ???
  6724. ----------16FF9A-----------------------------
  6725. INT 16 U - PC Tools v7+ DESKTOP - GET NAME OF COLOR SCHEME
  6726.     AX = FF9Ah
  6727. Return: ES:BX -> name of current color scheme
  6728. Note:    available even if not popped up
  6729. ----------16FF9B-----------------------------
  6730. INT 16 U - PC Tools v7+ DESKTOP - UNUSED
  6731.     AX = FF9Bh
  6732. Return: ???
  6733. Note:    sounds triple-length beep
  6734. ----------16FF9C-----------------------------
  6735. INT 16 U - PC Tools v8+ CPTASK - ???
  6736.     AX = FF9Ch
  6737.     BL = ??? (00h,01h)
  6738.     ???
  6739. Return: ???
  6740. Note:    sounds triple-length beep
  6741. ----------16FF9D-----------------------------
  6742. INT 16 U - PC Tools v8+ CPTASK, VSAFE - ???
  6743.     AX = FF9Dh
  6744.     ES:BX -> ??? word
  6745. Return: ???
  6746. Note:    if ES is non-zero, the word pointed at by ES:BX determines whether the
  6747.       ??? flag is cleared (word = 0000h) or set (word is nonzero).    The
  6748.       flag is always cleared if ES=0000h.
  6749. ----------16FF9E-----------------------------
  6750. INT 16 U - PC Tools v7+ DESKTOP - ???
  6751.     AX = FF9Eh
  6752.     DL = ???
  6753.         bit 7: ???
  6754.         bits 6-0: function number??? (00h,01h,other)
  6755.     ???
  6756. Return: ???
  6757. ----------16FFA1-----------------------------
  6758. INT 16 U - PC Tools v7+ DESKTOP - ???
  6759.     AX = FFA1h
  6760.     ???
  6761. Return: ???
  6762. Note:    same as AX=FFA2h, except ??? set to FFh
  6763. SeeAlso: AX=FFA2h
  6764. ----------16FFA2-----------------------------
  6765. INT 16 U - PC Tools v7+ DESKTOP - ???
  6766.     AX = FFA2h
  6767.     ???
  6768. Return: ???
  6769. Note:    calls AX=FFC7h (remove window) and AX=FFFDh
  6770. SeeAlso: AX=FFA1h,AX=FFC7h,AX=FFFDh
  6771. ----------16FFA3BX0000-----------------------
  6772. INT 16 U - PC Tools v7+ DATAMON - INSTALLATION CHECK
  6773.     AX = FFA3h
  6774.     BX = 0000h
  6775.     CX = 0000h
  6776. Return: AX = segment of resident code
  6777.     BX = 5555h
  6778.     CX = 5555h
  6779. ----------16FFA3BX0001-----------------------
  6780. INT 16 U - PC Tools v7+ DATAMON - GET ???
  6781.     AX = FFA3h
  6782.     BX = 0001h
  6783.     CX = 0001h
  6784. Return: AX:BX -> ???
  6785.     CX = BX
  6786. ----------16FFA3BX0002-----------------------
  6787. INT 16 U - PC Tools v7+ DATAMON - GET ???
  6788.     AX = FFA3h
  6789.     BX = 0002h
  6790.     CX = 0002h
  6791. Return: AX = ??? (0 or 1)
  6792.     CX = BX = AX
  6793. ----------16FFA3BX0003-----------------------
  6794. INT 16 U - PC Tools v7+ DATAMON - GET ???
  6795.     AX = FFA3h
  6796.     BX = 0003h
  6797.     CX = 0003h
  6798. Return: AX = ??? (0 or 1)
  6799.     CX = BX = AX
  6800. ----------16FFA3BX0004-----------------------
  6801. INT 16 U - PC Tools v7+ DATAMON - SET ??? FLAG
  6802.     AX = FFA3h
  6803.     BX = 0004h
  6804.     CX = 0004h
  6805. SeeAlso: AX=FFA3h/BX=0005h
  6806. ----------16FFA3BX0005-----------------------
  6807. INT 16 U - PC Tools v7+ DATAMON - CLEAR ??? FLAG
  6808.     AX = FFA3h
  6809.     BX = 0005h
  6810.     CX = 0005h
  6811. SeeAlso: AX=FFA3h/BX=0004h
  6812. ----------16FFA3BX0006-----------------------
  6813. INT 16 U - PC Tools v7+ DATAMON - SET PSP SEGMENT ???
  6814.     AX = FFA3h
  6815.     BX = 0006h
  6816.     CX = 0006h
  6817.     DX = current PSP segment as known to DOS??? or 0000h
  6818. ----------16FFA4-----------------------------
  6819. INT 16 U - PC Tools v7+ DESKTOP - ???
  6820.     AX = FFA4h
  6821. Return: ???
  6822. Notes:    available even when not popped up
  6823.     sets unknown flag if ??? conditions met
  6824. SeeAlso: AX=FEA4h
  6825. ----------16FFA5CX1111-----------------------
  6826. INT 16 - PC-Cache v6+ - INSTALLATION CHECK
  6827.     AX = FFA5h
  6828.     CX = 1111h
  6829. Return: CH = 00h if installed
  6830.         ES:DI -> internal data (see below)
  6831.         CL = cache state
  6832.         01h enabled
  6833.         02h disabled
  6834. SeeAlso: INT 13/AH=A0h,INT 21/AH=2Bh/CX=4358h
  6835.  
  6836. Format of internal data:
  6837. Offset    Size    Description
  6838. -1Ch 20 BYTEs    cached drive list, one byte per drive A: to T:
  6839.         each byte is either blank (20h) or drive letter (41h-54h)
  6840.  -8    BYTE    ???
  6841.  -7    WORD    number of physical transfers (scaled down to 0000h-7FFFh)
  6842.  -5    WORD    number of saved transfers (scaled down to 0000h-7FFFh)
  6843.  -3   3 BYTEs    ???
  6844. ----------16FFA5CXAAAA-----------------------
  6845. INT 16 - PC-Cache v6+ - ENABLE DELAYED WRITES
  6846.     AX = FFA5h
  6847.     CX = AAAAh
  6848. Return: AX = ??? (apparently either 0000h or sectors_in_cache - 5)
  6849. SeeAlso: AX=FFA5h/CX=CCCCh
  6850. ----------16FFA5CXCCCC-----------------------
  6851. INT 16 - PC-Cache v6+ - FLUSH CACHE AND DISABLE DELAYED WRITES
  6852.     AX = FFA5h
  6853.     CX = CCCCh
  6854. Return: AX = ??? (apparently either 0000h or sectors_in_cache - 5)
  6855. Note:    delayed writes are automatically disabled on EXECing
  6856.       (see INT 21/AH=4Bh) a program named either WIN.CO? or DV.E??;
  6857.       however, delayed writes are not automatically reenabled upon the
  6858.       program's termination in v6.
  6859. SeeAlso: AX=FFA5h/CX=AAAAh,AX=FFA5h/CX=FFFFh
  6860. ----------16FFA5CXDDDD-----------------------
  6861. INT 16 - PC-Cache v6+ - FLUSH AND DISABLE CACHE
  6862.     AX = FFA5h
  6863.     CX = DDDDh
  6864. SeeAlso: AX=FFA5h/CX=EEEEh,AX=FFA5h/CX=FFFFh
  6865. ----------16FFA5CXEEEE-----------------------
  6866. INT 16 - PC-Cache v6+ - ENABLE CACHE
  6867.     AX = FFA5h
  6868.     CX = EEEEh
  6869. SeeAlso: AX=FFA5h/CX=DDDDh
  6870. ----------16FFA5CXFFFF-----------------------
  6871. INT 16 - PC-Cache v6+ - FLUSH CACHE
  6872.     AX = FFA5h
  6873.     CX = FFFFh
  6874. SeeAlso: AX=FFA5h/CX=CCCCh,AX=FFA5h/CX=DDDDh,INT 13/AH=A1h
  6875. ----------16FFA6-----------------------------
  6876. INT 16 U - PC Tools v6.0+ DESKTOP API - GET ???
  6877.     AX = FFA6h
  6878. Return: DS:SI -> ???
  6879. Note:    available only when popped up
  6880. ----------16FFA7-----------------------------
  6881. INT 16 U - PC Tools v6.0+ DESKTOP API - GET ??? PATH
  6882.     AX = FFA7h
  6883. Return: DS:SI -> ASCIZ path (directory from which PCTools was run???)
  6884. ----------16FFA8-----------------------------
  6885. INT 16 U - PC Tools v6.0+ DESKTOP API - ???
  6886.     AX = FFA8h
  6887.     DS:SI -> three consecutive ASCIZ strings for ??? (max 256 bytes total)
  6888.     ???
  6889. Return: ???
  6890. Notes:    available only when popped up
  6891.     strings copied into internal buffer, among other actions
  6892. ----------16FFA9-----------------------------
  6893. INT 16 U - PC Tools v6.0+ DESKTOP API - GET VERSION STRING
  6894.     AX = FFA9h
  6895. Return: DS:SI -> version string
  6896. ----------16FFAA-----------------------------
  6897. INT 16 U - PC Tools v6.0+ DESKTOP API - ???
  6898.     AX = FFAAh
  6899.     ???
  6900. Return: ???
  6901. Note:    available only when popped up
  6902. ----------16FFAB-----------------------------
  6903. INT 16 U - PC Tools v6.0+ DESKTOP API - GET EDITOR SETTINGS???
  6904.     AX = FFABh
  6905. Return: DS:SI -> editor setting strings???
  6906. ----------16FFAC-----------------------------
  6907. INT 16 U - PC Tools v6.0+ DESKTOP API - SET ???
  6908.     AX = FFACh
  6909.     DL = ???
  6910. Note:    available only when popped up
  6911. ----------16FFAD-----------------------------
  6912. INT 16 U - PC Tools v6.0+ DESKTOP API - SET ???
  6913.     AX = FFADh
  6914.     DL = ???
  6915. ----------16FFAE-----------------------------
  6916. INT 16 U - PC Tools v6.0+ DESKTOP API - GET ???
  6917.     AX = FFAEh
  6918. Return: AL = ???
  6919. ----------16FFAF-----------------------------
  6920. INT 16 U - PC Tools v6.0+ DESKTOP API - SET ???
  6921.     AX = FFAFh
  6922.     DL = ???
  6923. ----------16FFB0-----------------------------
  6924. INT 16 U - PC Tools v6.0+ DESKTOP API - SET ???
  6925.     AX = FFB0h
  6926.     BL = ???
  6927. ----------16FFB1-----------------------------
  6928. INT 16 U - PC Tools v6.0+ DESKTOP API - ???
  6929.     AX = FFB1h
  6930.     ???
  6931. Return: ???
  6932. ----------16FFB2-----------------------------
  6933. INT 16 U - PC Tools v5.5+ DESKTOP API - GET ???
  6934.     AX = FFB2h
  6935. Return: DS:SI -> ???
  6936. ----------16FFB3-----------------------------
  6937. INT 16 U - PC Tools v5.5+ DESKTOP API - ???
  6938.     AX = FFB3h
  6939.     ???
  6940. Return: ???
  6941. Note:    available only when popped up
  6942. ----------16FFB4-----------------------------
  6943. INT 16 U - PC Tools v5.5+ DESKTOP API - SET ??? FLAG
  6944.     AX = FFB4h
  6945. Note:    available only when popped up
  6946. SeeAlso: AX=FFBBh
  6947. ----------16FFB5-----------------------------
  6948. INT 16 U - PC Tools v5.5+ DESKTOP API - GET/SET WINDOW PARAMETERS
  6949.     AX = FFB5h
  6950.     BX = window specifier (000Fh to 0019h) (see below)
  6951.     DX = 0000h get, nonzero = set
  6952.     ES:DI -> window parameter buffer (see below)
  6953. SeeAlso: AX=FFCBh
  6954.  
  6955. Values for window specifier:
  6956.  000Fh    comm/FAX
  6957.  0014h    hotkey selection
  6958.  0015h    ASCII table
  6959.  0016h    system colors menu
  6960.  
  6961. Format of window parameters:
  6962. Offset    Size    Description
  6963.  00h    BYTE    rows in window, not counting frame
  6964.  01h    BYTE    columns in window, not counting frame
  6965.  02h    BYTE    row number of top of window
  6966.  03h    BYTE    2*column number of left of window
  6967.  04h    BYTE    character attribute for ???
  6968.  05h    BYTE    character attribute for background/border
  6969.  06h    BYTE    character attribute for ???
  6970.  07h    DWORD    pointer to ??? on screen
  6971.  0Bh  4 BYTEs    ???
  6972.  0Fh    BYTE    nonzero if window may be resized
  6973. Note:    if running in monochrome mode, character attributes at offsets 04h to
  6974.       06h are stored unchanged, but attributes other than 07h, 0Fh, or 70h
  6975.       are changed to 07h on reading
  6976. ----------16FFB6-----------------------------
  6977. INT 16 U - PC Tools v5.5+ DESKTOP API - GET ???
  6978.     AX = FFB6h
  6979. Return: AH = ???
  6980.     AL = ???
  6981. ----------16FFB7-----------------------------
  6982. INT 16 U - PC Tools v5.5+ DESKTOP API - GET/SET ???
  6983.     AX = FFB7h
  6984.     BX = direction
  6985.         0000h copy to buffer
  6986.         else  copy from buffer
  6987.     DS:SI -> 70-byte buffer with ???
  6988. Return: data copied
  6989. Note:    available only when popped up under v6.0+
  6990. ----------16FFB8-----------------------------
  6991. INT 16 U - PC Tools v5.1+ DESKTOP API - GET/SET???
  6992.     AX = FFB8h
  6993.     BH = subfunction
  6994.         00h get
  6995.         Return: BL = old value of ???
  6996.             CL = old value of ??? (v6.0+)
  6997.             CH = old value of ??? (v6.0+)
  6998.         nonzero set
  6999.         BL = new value for ???
  7000.         CL = new value for ??? (v6.0+)
  7001.         CH = new value for ??? (v6.0+)
  7002.         DH = ???
  7003.         Return: AL = old value replaced by CL (v6.0+)
  7004.             AH = old value replaced by CH (v6.0+)
  7005. ----------16FFB9-----------------------------
  7006. INT 16 U - PC Tools v5.1+ DESKTOP API - ???
  7007.     AX = FFB9h
  7008.     ???
  7009. Return: AX = ???
  7010.     CX = ???
  7011.     DS:SI -> ???
  7012.     ES:DI -> ???
  7013. ----------16FFBA-----------------------------
  7014. INT 16 U - PC Tools v5.1+ DESKTOP API - ???
  7015.     AX = FFBAh
  7016.     ???
  7017. Return: AX = ???
  7018. Note:    available only when popped up
  7019. ----------16FFBB-----------------------------
  7020. INT 16 U - PC Tools v5.1+ DESKTOP API - CLEAR ??? FLAG
  7021.     AX = FFBBh
  7022. Note:    available only when popped up
  7023. SeeAlso: AX=FFB4h
  7024. ----------16FFBC-----------------------------
  7025. INT 16 U - PC Tools v5.1+ DESKTOP API - RESTORE ORIGINAL SCREEN???
  7026.     AX = FFBCh
  7027. ----------16FFBD-----------------------------
  7028. INT 16 U - PC Tools v5.1+ DESKTOP API - ??? DATABASE INDEXING MESSAGES
  7029.     AX = FFBDh
  7030.     ???
  7031. Return: ???
  7032. ----------16FFBE-----------------------------
  7033. INT 16 U - PC Tools v5.1+ DESKTOP API - ???
  7034.     AX = FFBEh
  7035.     ???
  7036. Return: ???
  7037. Note:    available only when popped up
  7038. ----------16FFBF-----------------------------
  7039. INT 16 U - PC Tools v5.1+ DESKTOP API - ???
  7040.     AX = FFBFh
  7041.     BX = DOS file handle to write on
  7042.     ???
  7043. Return: ???
  7044. Note:    available only when popped up
  7045. ----------16FFC0-----------------------------
  7046. INT 16 U - PC Tools v5.1+ DESKTOP API - ???
  7047.     AX = FFC0h
  7048.     ???
  7049. Return: AX = 0000h if successful
  7050.     AX = FFFFh on error
  7051. Note:    available only when popped up
  7052. ----------16FFC1-----------------------------
  7053. INT 16 U - PC Tools v5.1+ DESKTOP API - ???
  7054.     AX = FFC1h
  7055.     BL = ???
  7056.     ES:DI -> data structure (see below)
  7057.     ???
  7058. Return: AX = ???
  7059. Note:    available only when popped up
  7060. SeeAlso: AX=FFC2h,AX=FFC3h
  7061.  
  7062. Format of data structure:
  7063. Offset    Size    Description
  7064.  00h    WORD    ???
  7065.  02h    WORD    ???
  7066.  04h    WORD    ???
  7067.  06h    WORD    ???
  7068.  08h    WORD    ???
  7069.  0Ah    BYTE    ???
  7070.  0Bh    BYTE    ??? (zero/nonzero)
  7071. ---v7.1---
  7072.  0Ch    WORD    ???
  7073.  0Eh    BYTE    ???
  7074.  0Fh    WORD    ???
  7075.  11h    WORD    ???
  7076.     ???
  7077. ----------16FFC2-----------------------------
  7078. INT 16 U - PC Tools v5.1+ DESKTOP API - ???
  7079.     AX = FFC2h
  7080.     BL = ???
  7081.     ES:DI -> data structure (see AX=FFC1h)
  7082.     ???
  7083. Return: AH = ???
  7084.     CX = ???
  7085.     DH = ???
  7086.     DL = ???
  7087. Note:    available only when popped up
  7088. SeeAlso: AX=FFC1h,AX=FFC3h
  7089. ----------16FFC3-----------------------------
  7090. INT 16 U - PC Tools v5.1+ DESKTOP API - ???
  7091.     AX = FFC3h
  7092.     BL = ???
  7093.     ES:DI -> data structure (see AX=FFC1h)
  7094.     ???
  7095. Return: AH = ???
  7096.     CX = ???
  7097.     DH = ???
  7098.     DL = ???
  7099. Note:    available only when popped up
  7100. SeeAlso: AX=FFC1h,AX=FFC2h
  7101. ----------16FFC4-----------------------------
  7102. INT 16 U - PC Tools v5.1+ DESKTOP API - GET ???
  7103.     AX = FFC4h
  7104. Return: AL = ???
  7105.     BX = segment of scratch space???
  7106.     CX = segment of stored screen data (section covered by window???)
  7107.     DX = segment of window parameters for ???
  7108.     ES:BP -> ???
  7109. Note:    available only when popped up in versions prior to 6.0
  7110. ----------16FFC5-----------------------------
  7111. INT 16 U - PC Tools v5.1+ DESKTOP API - CHECK WHETHER DESKTOP LOADED RESIDENT
  7112.     AX = FFC5h
  7113. Return: BL = nonzero if loaded resident
  7114.        = 00h if nonresident
  7115. Note:    available only when popped up; should call AX=FFEFh first to ensure
  7116.       that DESKTOP is active
  7117. SeeAlso: AX=FFEFh,AX=FFF3h
  7118. ----------16FFC6-----------------------------
  7119. INT 16 U - PC Tools v5.1+ DESKTOP API - SET ???
  7120.     AX = FFC6h
  7121.     BL = new value for ???
  7122. ----------16FFC7-----------------------------
  7123. INT 16 U - PC Tools v5.1+ DESKTOP API - REMOVE WINDOW
  7124.     AX = FFC7h
  7125.     ???
  7126. Return: ???
  7127. ----------16FFC8-----------------------------
  7128. INT 16 U - PC Tools v5.1+ DESKTOP API - GET ???
  7129.     AX = FFC8h
  7130. Return: DS:SI -> ???
  7131. Note:    valid only while popped up
  7132. ----------16FFC9-----------------------------
  7133. INT 16 U - PC Tools v5.1+ DESKTOP API - COPY DATA TO CLIPBOARD
  7134.     AX = FFC9h
  7135.     DS:SI -> characters to store in clipboard
  7136.     CX = size in bytes
  7137. Return: CF set on error
  7138. Notes:    available only when popped up
  7139.     while copying, bytes of 00h and 0Ah are skipped
  7140. ----------16FFCA-----------------------------
  7141. INT 16 U - PC Tools v5.1+ DESKTOP API - SET ???
  7142.     AX = FFCAh
  7143.     DX = ???
  7144. Return: AX destroyed
  7145. Note:    available only when popped up
  7146. ----------16FFCB-----------------------------
  7147. INT 16 U - PC Tools v5.1+ DESKTOP API - SELECT WINDOW PARAMETERS???
  7148.     AX = FFCBh
  7149.     DX = window specifier???
  7150. Return: AX destroyed
  7151. Note:    available only when popped up
  7152. SeeAlso: AX=FFB5h
  7153. ----------16FFCC-----------------------------
  7154. INT 16 U - PC Tools v5.1+ DESKTOP API - DISPLAY ASCIZ STRING CENTERED IN WINDOW
  7155.     AX = FFCCh
  7156.     DS:SI -> ASCIZ string
  7157. Return: AX = ???
  7158.     CX = ???
  7159.     ES:DI -> address past last character displayed (v5.1/5.5)
  7160.           -> ??? on menu bar (v6.0)
  7161. ----------16FFCD-----------------------------
  7162. INT 16 U - PC Tools v5.1+ DESKTOP API - ???
  7163.     AX = FFCDh
  7164.     DS:DX -> ???
  7165. Return: ???
  7166. Note:    available only when popped up
  7167. ----------16FFCE-----------------------------
  7168. INT 16 U - PC Tools v5.1+ DESKTOP API - SET ??? DELAYS
  7169.     AX = FFCEh
  7170.     CX = ???
  7171. Return: nothing???
  7172. ----------16FFCF-----------------------------
  7173. INT 16 U - PC Tools v5.1+ DESKTOP API - CLOSE PRINTER/PRINT FILE
  7174.     AX = FFCFh
  7175. Note:    available only when popped up
  7176. ----------16FFD0-----------------------------
  7177. INT 16 U - PC Tools v5.1+ DESKTOP API - PREPARE TO PRINT???
  7178.     AX = FFD0h
  7179.     ???
  7180. Return: ???
  7181. Note:    available only when popped up
  7182. ----------16FFD1-----------------------------
  7183. INT 16 U - PC Tools v5.1+ DESKTOP API - DISPLAY PRINT OPTIONS MENU
  7184.     AX = FFD1h
  7185. Return: BX = number of copies
  7186.     DX = destination
  7187.         00h cancel
  7188.         01h LPT1
  7189.         02h LPT2
  7190.         03h    LPT3
  7191.         04h    COM1
  7192.         05h    COM2
  7193.         06h disk file
  7194. Note:    available only when popped up
  7195. ----------16FFD2-----------------------------
  7196. INT 16 U - PC Tools v5.1+ DESKTOP API - ???
  7197.     AX = FFD2h
  7198.     BX = ???
  7199. Return: BL = ???
  7200. Note:    available only when popped up
  7201. ----------16FFD3-----------------------------
  7202. INT 16 U - PC Tools v5.1+ DESKTOP API - ???
  7203.     AX = FFD3h
  7204.     DS:SI -> 92-byte data record for ???
  7205. Return: ???
  7206. SeeAlso: AX=FED3h
  7207. ----------16FFD4BH3C-------------------------
  7208. INT 16 U - PC Tools v5.1+ DESKTOP API - CREATE/OPEN/DELETE FILE
  7209.     AX = FFD4h
  7210.     BH = 3Ch create file (with no attributes)
  7211.          3Dh open file
  7212.          41h delete file
  7213.     BL = access mode
  7214.          00h read only
  7215.          01h write only
  7216.          02h read/write
  7217.     DS:SI -> ASCIZ filename
  7218. Return: BX = file handle
  7219.         0000h on error
  7220. Note:    operation is attempted in (in order) the directory from which the
  7221.       desktop was started/run???, the directory specified with the
  7222.       filename, X:\PCTOOLS\, and X:\
  7223. ----------16FFD5-----------------------------
  7224. INT 16 U - PC Tools v5.1+ DESKTOP API - ???
  7225.     AX = FFD5h
  7226.     ???
  7227. Return: ???
  7228. Note:    available only when popped up
  7229. ----------16FFD6-----------------------------
  7230. INT 16 U - PC Tools v5.1+ DESKTOP API - ???
  7231.     AX = FFD6h
  7232.     BX = ???
  7233.     CX = ???
  7234.     DX = offset in ???
  7235.     ???
  7236. Return: ???
  7237. Note:    available only when popped up
  7238. ----------16FFD7-----------------------------
  7239. INT 16 U - PC Tools v5.1+ DESKTOP API - ???
  7240.     AX = FFD7h
  7241.     ???
  7242. Return: BL = ???
  7243. Note:    available only when popped up
  7244. ----------16FFD8-----------------------------
  7245. INT 16 U - PC Tools v5.1+ DESKTOP API - SAFE CREATE FILE
  7246.     AX = FFD8h
  7247.     DS:BX -> ASCIZ filename
  7248. Return: BX = file handle
  7249.         0000h on error
  7250. Note:    pops up confirmation menu if file already exists
  7251.     only available when popped up???
  7252. ----------16FFD9-----------------------------
  7253. INT 16 U - PC Tools v5.1+ DESKTOP API - GET ???
  7254.     AX = FFD9h
  7255. Return: AX = ???
  7256. Note:    available only when popped up
  7257. ----------16FFDA-----------------------------
  7258. INT 16 U - PC Tools v5.1+ DESKTOP API - GET NAME OF LAST FILE OPENED
  7259.     AX = FFDAh
  7260.     DS:SI -> ??? (v5.1/5.5 only)
  7261. Return: DS:SI -> filename
  7262. ----------16FFDB-----------------------------
  7263. INT 16 U - PC Tools v5.1+ DESKTOP API - SET ???
  7264.     AX = FFDBh
  7265.     BL = ???
  7266. Note:    available only when popped up
  7267. ----------16FFDC-----------------------------
  7268. INT 16 U - PC Tools v5.1+ DESKTOP API - UNHOOK
  7269.     AX = FFDCh
  7270. Return: interrupt vectors 09h, 10h (v6.0+), 16h, 1Ch, and 21h restored to
  7271.       original values
  7272. ----------16FFDDBX0000-----------------------
  7273. INT 16 U - PC Tools v5.1+ PCShell API - INSTALLATION CHECK
  7274.     AX = FFDDh
  7275.     BX = 0000h
  7276. Return: CX = 5555h 
  7277.     DX = 5555h if PCShell installed in resident mode
  7278. ----------16FFDDBX0001-----------------------
  7279. INT 16 U - PC Tools v5.1+ PCShell API - REQUEST POP-UP
  7280.     AX = FFDDh
  7281.     BX = 0001h
  7282. Return: CF clear if request successful (PCShell will pop up)
  7283.     CF set on error
  7284. SeeAlso: AX=FFDDh/BX=0003h
  7285. ----------16FFDDBX0002-----------------------
  7286. INT 16 U - PC Tools v5.1-5.5 PCShell API - GET ???
  7287.     AX = FFDDh
  7288.     BX = 0002h
  7289. Return: AL = 
  7290.         00h ???
  7291.         01h ???
  7292. Note:    PCShell v6.0+ displays the error message "Incorrect PCRUN version",
  7293.       awaits a keystroke, and aborts the current process
  7294. ----------16FFDDBX0003-----------------------
  7295. INT 16 U - PC Tools v5.1+ PCShell API - REQUEST POP-UP
  7296.     AX = FFDDh
  7297.     BX = 0003h
  7298. SeeAlso: AX=FFDDh/BX=0001h
  7299. ----------16FFDDBX0004-----------------------
  7300. INT 16 U - PC Tools v5.1+ PCShell API - GET ???
  7301.     AX = FFDDh
  7302.     BX = 0004h
  7303. Return: CF clear if successful
  7304.         DS:SI -> ???
  7305. ----------16FFDDBX0005-----------------------
  7306. INT 16 U - PC Tools v5.1+ PCShell API - ???
  7307.     AX = FFDDh
  7308.     BX = 0005h
  7309.     ???
  7310. Return: ???
  7311. Note:    resets various variables if certain conditions are met
  7312. ----------16FFDDBX0006-----------------------
  7313. INT 16 U - PC Tools v5.1+ PCShell API - ???
  7314.     AX = FFDDh
  7315.     BX = 0006h
  7316.     ???
  7317. Return: ???
  7318. Note:    resets various variables if certain conditions are met
  7319. ----------16FFDDBX0007-----------------------
  7320. INT 16 U - PC Tools v5.1+ PCShell API - SET ??? FLAG
  7321.     AX = FFDDh
  7322.     BX = 0007h
  7323. Return: CF clear if successful
  7324. SeeAlso: AX=FFDDh/BX=0008h
  7325. ----------16FFDDBX0008-----------------------
  7326. INT 16 U - PC Tools v5.1+ PCShell API - CLEAR ??? FLAG
  7327.     AX = FFDDh
  7328.     BX = 0008h
  7329. Return: CF undefined
  7330. SeeAlso: AX=FFDDh/BX=0007h
  7331. ----------16FFDDBX0009-----------------------
  7332. INT 16 U - PC Tools v6.0+ PCShell API - GET PCRUN PARAMETERS
  7333.     AX = FFDDh
  7334.     BX = 0009h
  7335. Return: CF clear if successful
  7336.         DS:SI -> list of pointers (see below)
  7337.  
  7338. Format of returned pointer list:
  7339. Offset    Size    Description
  7340.  00h    WORD    offset of WORD containing ???
  7341.  02h    WORD    offset of name of program to execute
  7342.  04h    WORD    offset of 80-byte buffer for ???
  7343.  06h    WORD    offset of buffer for ??? (length in WORD preceding buffer)
  7344.  08h    WORD    offset of buffer for ??? (length in WORD preceding buffer)
  7345. ----------16FFDDBX000A-----------------------
  7346. INT 16 U - PC Tools v6.0+ PCRUN API - INSTALLATION CHECK
  7347.     AX = FFDDh
  7348.     BX = 000Ah
  7349. Return: CX = 5555h if running
  7350.     DX = 5555h
  7351. Note:    also sets a flag
  7352. ----------16FFDDBX000B-----------------------
  7353. INT 16 U - PC Tools v6.0+ PCRUN API - ???
  7354.     AX = FFDDh
  7355.     BX = 000Bh
  7356.     ???
  7357. Return: CX = 5555h if PCRUN active
  7358.     DX = 5555h
  7359. Note:    also clears flag set by AX=FFDDh/BX=000Ah
  7360. ----------16FFDE-----------------------------
  7361. INT 16 U - PC Tools v5.1+ DESKTOP API - DISPLAY POPUP MENU
  7362.     AX = FFDEh
  7363.     DS:DX -> menu description (must be on a paragraph boundary)
  7364. Return: AX = ???
  7365.         AL seems to be the number of the selected button
  7366. Note:    available only when popped up
  7367. SeeAlso: AX=FFEEh
  7368. ----------16FFDF-----------------------------
  7369. INT 16 U - PC Tools v5.1+ DESKTOP API - ???
  7370.     AX = FFDFh
  7371.     ???
  7372. Return: ???
  7373. ----------16FFE0-----------------------------
  7374. INT 16 U - PC Tools v5.1+ DESKTOP API - ???
  7375.     AX = FFE0h
  7376.     CX = ???
  7377.     DX = ???
  7378. Note:    available only when popped up
  7379. ----------16FFE1-----------------------------
  7380. INT 16 U - PC Tools v5.1+ DESKTOP API - BEEP
  7381.     AX = FFE1h
  7382. ----------16FFE2-----------------------------
  7383. INT 16 U - PC Tools v5.1+ DESKTOP API - ???
  7384.     AX = FFE2h
  7385.     DX = ???
  7386. Return: ???
  7387. Note:    available only when popped up
  7388. ----------16FFE3-----------------------------
  7389. INT 16 U - PC Tools v5.1+ DESKTOP API - PRINT CHARACTER
  7390.     AX = FFE3h
  7391.     BL = character to print to currently open printer or print file
  7392. Return: CF set on error
  7393. Note:    available only when popped up
  7394. SeeAlso: INT 17/AH=00h
  7395. ----------16FFE4-----------------------------
  7396. INT 16 U - PC Tools v5.1+ DESKTOP API - ???
  7397.     AX = FFE4h
  7398.     DX = segment of ???
  7399. Return: ???
  7400. Note:    available only when popped up
  7401. ----------16FFE5-----------------------------
  7402. INT 16 U - PC Tools v5.1+ DESKTOP API - POP UP FILE SELECTION MENU
  7403.     AX = FFE5h
  7404.     DS:SI -> ASCIZ wildcard filespec followed by ASCIZ menu title
  7405.     DX = segment of window parameters???
  7406. Return: AX = DOS file handle for file
  7407.         DS:DX -> filename???
  7408.        = FFFFh if cancelled by user
  7409. Note:    available only when popped up
  7410. SeeAlso: AX=FFDAh
  7411. ----------16FFE6-----------------------------
  7412. INT 16 U - PC Tools v5.1+ DESKTOP API - CHECK FOR AND GET KEYSTROKE
  7413.     AX = FFE6h
  7414. Return: AX = 0000h if no key available
  7415.          else  BIOS keycode
  7416. Notes:    available only when popped up
  7417.     invokes INT 28 idle interrupt before checking for key
  7418. ----------16FFE7-----------------------------
  7419. INT 16 U - PC Tools v5.1+ DESKTOP API - ???
  7420.     AX = FFE7h
  7421.     BX = segment of ???
  7422. Return: ???
  7423. Note:    available only when popped up
  7424. ----------16FFE8-----------------------------
  7425. INT 16 U - PC Tools v5.1+ DESKTOP API - DISPLAY NUMBER
  7426.     AX = FFE8h
  7427.     CX = number
  7428.     DH = attribute
  7429.     DS:SI -> destination for ASCII number
  7430. Return: DS:SI buffer filled in with alternating characters and attributes
  7431. ----------16FFE9-----------------------------
  7432. INT 16 U - PC Tools v5.1+ DESKTOP API - GET FILE LIST???
  7433.     AX = FFE9h
  7434. Return: BX = segment of file/directory list (14 bytes per file, NUL-padded)
  7435. Note:    available only when popped up
  7436. ----------16FFEA-----------------------------
  7437. INT 16 U - PC Tools v5.1+ DESKTOP API - DISPLAY COUNTED STRING
  7438.     AX = FFEAh
  7439.     DS:SI -> counted string (count byte followed by string)
  7440. Return: ???
  7441. Note:    available only when popped up
  7442. ----------16FFEB-----------------------------
  7443. INT 16 U - PC Tools v5.1+ DESKTOP API - ???
  7444.     AX = FFEBh
  7445.     ???
  7446. Return: ???
  7447. ----------16FFEC-----------------------------
  7448. INT 16 U - PC Tools v5.1+ DESKTOP API - GET KEY
  7449.     AX = FFECh
  7450.     DS:SI -> FAR routine to ???
  7451.     BX = ???
  7452.     ???
  7453. Return: AX = keystroke
  7454.         FFFFh if F10 pressed to go to menu
  7455. Notes:    available only when popped up
  7456.     invokes INT 28 while waiting for keystroke
  7457.     F10 is hotkey to Desktop menu
  7458. ----------16FFED-----------------------------
  7459. INT 16 U - PC Tools v5.1+ DESKTOP API - GET ???
  7460.     AX = FFEDh
  7461. Return: AX = ???
  7462. Note:    available only when popped up
  7463. ----------16FFEE-----------------------------
  7464. INT 16 U - PC Tools v5.1+ DESKTOP API - DEFINE PULLDOWN MENUS
  7465.     AX = FFEEh
  7466.     DS:SI -> pulldown menu system description (see below)
  7467. Return: AX destroyed
  7468. Notes:    available only when popped up
  7469.     if the accessory does not need any menu items of its own, it should
  7470.       call AX=FFFAh instead
  7471. SeeAlso: AX=FFF7h,AX=FFFAh
  7472.  
  7473. Format of pulldown menu system description:
  7474. Offset    Size    Description
  7475.  00h    WORD    offset of menu bar contents (counted string)
  7476.  02h    WORD    number of items on menu bar
  7477.  04h 10 BYTEs    scan codes for hotkeying to each of up to ten menu items
  7478.  0Eh 10    BYTEs    which character to highlight in each menu item (01h=first)
  7479.  18h    WORD    offset of first menu definition (see below)
  7480.  1Ah    WORD    offset of second menu definition
  7481.     ...
  7482.  
  7483. Format of menu definition:
  7484. Offset    Size    Description
  7485.  00h    WORD    offset of menu contents (see below)
  7486.  02h    WORD    number of entries in menu
  7487.  04h    for each entry:
  7488.         Offset    Size    Description
  7489.          00h    BYTE    scancode of Alt-key to invoke entry
  7490.          01h    BYTE    character to highlight (01h=first, etc)
  7491.          02h    WORD    offset of FAR routine to handle selection
  7492.  
  7493. Format of menu contents:
  7494. Offset    Size    Description
  7495.  00h    BYTE    number of lines in menu
  7496.  01h    BYTE    width of menu
  7497.  02h  N BYTEs    counted strings, one for each line in menu
  7498. ----------16FFEFCX0000-----------------------
  7499. INT 16 U - PC Tools v5.1+ DESKTOP API - INSTALLATION CHECK
  7500.     AX = FFEFh
  7501.     CX = 0000h
  7502. Return: CX = ABCDh if PC Tools DESKTOP.EXE installed
  7503.         BX = segment of resident portion
  7504.         AX = ??? (v5.1/5.5 only)
  7505. SeeAlso: AX=FEEFh,AX=FFC5h,AX=FFF3h
  7506. ----------16FFF0-----------------------------
  7507. INT 16 U - PC Tools v5.1+ DESKTOP API - SET ???
  7508.     AX = FFF0h
  7509.     DX = ???
  7510. Return: AX destroyed
  7511. Note:    available only when popped up
  7512. ----------16FFF1BX0000-----------------------
  7513. INT 16 U - PC Tools v5.1+ DESKTOP API - ALTERNATE INSTALLATION CHECK
  7514.     AX = FFF1h
  7515.     BX = 0000h  leave ??? flag as is
  7516.         nonzero set ??? flag
  7517. Return: CX = 5555h if installed
  7518.     DX = 5555h
  7519. ----------16FFF2-----------------------------
  7520. INT 16 U - PC Tools v5.1+ DESKTOP API - DISPLAY HELP LINE
  7521.     AX = FFF2h
  7522.     DS:SI -> ASCIZ function key label string (each label preceded by '[')
  7523.         or help text
  7524. Return: AX destroyed
  7525. Notes:    available only when popped up
  7526.     if the specified string does not start with '[', it is displayed
  7527.       centered on the bottom line, else the function key labels are shown
  7528. ----------16FFF3-----------------------------
  7529. INT 16 U - PC Tools v5.1+ DESKTOP API - PREPARE TO UNLOAD RESIDENT DESKTOP
  7530.     AX = FFF3h
  7531. Note:    releases any EMS being used; restores video mode, page, and cursor
  7532.       shape; and restores interrupt vectors
  7533. SeeAlso: AX=FFC5h,AX=FFEFh
  7534. ----------16FFF4-----------------------------
  7535. INT 16 U - PC Tools v5.1+ DESKTOP API - ???
  7536.     AX = FFF4h
  7537.     ???
  7538. Return: ???
  7539. Note:    available only when popped up
  7540. SeeAlso: AX=FFF6h
  7541. ----------16FFF5-----------------------------
  7542. INT 16 U - PC Tools v5.1+ DESKTOP API - GET SCREEN ATTRIBUTE ARRAY
  7543.     AX = FFF5h
  7544. Return: ES:BX -> screen attributes data structure (see below)
  7545.     AL = ??? (v6.0+)
  7546.  
  7547. Format of attribute data structure:
  7548. Offset    Size    Description
  7549.  -1    BYTE    attribute for desktop background
  7550.  00h    BYTE    attribute for normal characters on desktop menu
  7551.  01h    BYTE    attribute for highlighted characters on desktop menu
  7552.  02h  5    BYTEs    ???
  7553.  07h    BYTE    attribute for dialog boxes
  7554.  08h 15 BYTEs    ???
  7555.  17h    BYTE    attribute for message boxes
  7556. ----------16FFF6-----------------------------
  7557. INT 16 U - PC Tools v5.1+ DESKTOP API - INVOKE NOTEPAD EDITOR
  7558.     AX = FFF6h
  7559.     DS = segment of editor buffer structure (see below)
  7560.     BX = ???
  7561.     DX = segment of window parameters structure (see AX=FFB5h)
  7562. Return: ???
  7563. Note:    available only when popped up
  7564. SeeAlso: AX=FFF4h
  7565.  
  7566. Format of editor buffer structure:
  7567. Offset    Size    Description
  7568.  00h    WORD    offset of current cursor position in buffer segment
  7569.  02h  2 BYTEs    ???
  7570.  04h    WORD    offset of beginning of file data in buffer segment
  7571.  06h 10 BYTEs    ???
  7572.  10h  N BYTEs    ASCIZ name of file being edited
  7573. ----------16FFF7-----------------------------
  7574. INT 16 U - PC Tools v5.1+ DESKTOP API - PROCESS MENU BAR ENTRY???
  7575.     AX = FFF7h
  7576.     DS:SI -> ???
  7577.     ???
  7578. Return: ???
  7579. Notes:    available only when popped up
  7580.     performs input processing on the menu bar set up with AX=FFEEh
  7581. SeeAlso: AX=FFEEh,AX=FFFBh
  7582. ----------16FFF8-----------------------------
  7583. INT 16 U - PC Tools v5.1+ DESKTOP API - DRAW EMPTY WINDOW
  7584.     AX = FFF8h
  7585.     DS:0000h -> window parameters structure (see AX=FFB5h)
  7586.     DS:BX -> DWORD to store address of ??? on screen
  7587. Return: ???
  7588. ----------16FFF9-----------------------------
  7589. INT 16 U - PC Tools v5.1+ DESKTOP API - DEFINE SCREEN REFRESH ROUTINE
  7590.     AX = FFF9h
  7591.     ES:BX -> FAR routine to redisplay the utility's window
  7592. Note:    available only when popped up
  7593. ----------16FFFA-----------------------------
  7594. INT 16 U - PC Tools v5.1+ DESKTOP API - DEFINE STANDARD PULLDOWN MENUS
  7595.     AX = FFFAh
  7596. Notes:    available only when popped up
  7597.     adds the "Window" option to the "Desktop" option which is the only one
  7598.       available when no accessories are active.  Unlike AX=FFEEh, no
  7599.       additional menu items are added between "Desktop" and "Window"
  7600. SeeAlso: AX=FFEEh,AX=FFFBh
  7601. ----------16FFFB-----------------------------
  7602. INT 16 U - PC Tools v5.1+ DESKTOP API - PROCESS STANDARD MENU BAR
  7603.     AX = FFFBh
  7604. Return: ???
  7605. Notes:    available only when popped up
  7606.     performs input processing on the standard menu bar set up with AX=FFFAh
  7607. SeeAlso: AX=FFF7h
  7608. ----------16FFFC-----------------------------
  7609. INT 16 U - PC Tools v5.1+ DESKTOP API - GET HOTKEYS AND KEYBOARD VECTOR
  7610.     AX = FFFCh
  7611. Return: ES:BX -> hotkey table (see below)
  7612.     DS:DX = original INT 9 vector
  7613.  
  7614. Format of hotkey table:
  7615. Offset    Size    Description
  7616.  00h  2 BYTEs    scancode/shift state for desktop hotkey
  7617.  02h  2 BYTEs    scancode/shift state for clipboard paste key
  7618.  04h  2 BYTEs    scancode/shift state for clipboard copy key
  7619.  06h  2 BYTEs    scancode/shift state for screen autodial key
  7620. ----------16FFFD-----------------------------
  7621. INT 16 U - PC Tools v5.1+ DESKTOP API - COPY ???
  7622.     AX = FFFDh
  7623. Return: AX destroyed
  7624. Note:    copies 4000 bytes from ??? to ??? under certain circumstances
  7625. SeeAlso: AX=FF91h,AX=FF92h
  7626. ----------16FFFE-----------------------------
  7627. INT 16 U - PC Tools v5.1+ DESKTOP API - SHOW MOUSE CURSOR
  7628.     AX = FFFEh
  7629. SeeAlso: AX=FFFFh,INT 33/AX=0001h
  7630. ----------16FFFF-----------------------------
  7631. INT 16 U - PC Tools v5.1+ DESKTOP API - HIDE MOUSE CURSOR
  7632.     AX = FFFFh
  7633. SeeAlso: AX=FFFEh,INT 33/AX=0002h
  7634. ----------17----DX0ABC-----------------------
  7635. INT 17 - PRINTER - LPTx v5.x INSTALLATION CHECK
  7636.     DX = 0ABCh
  7637. Return: AX = AAAAh
  7638.     DX = BAAAh
  7639.     ES = code segment of resident portion
  7640. ----------17----DX0B90-----------------------
  7641. INT 17 - PRINTER - LPTx v6.x INSTALLATION CHECK
  7642.     DX = 0B90h
  7643. Return: DX = ABBBh
  7644.     ES = code segment of resident portion
  7645. ----------17----DX0B91-----------------------
  7646. INT 17 - PRINTER - LPTx v7.x INSTALLATION CHECK
  7647.     DX = 0B91h
  7648. Return: DX = ABCBh
  7649.     ES = code segment of resident portion
  7650. ----------17----DX0F5F-----------------------
  7651. INT 17 - PRINTER - LPTx v4.x INSTALLATION CHECK
  7652.     DX = 0F5Fh
  7653. Return: AX = AAAAh
  7654.     DX = F555h
  7655.     ES = code segment of resident portion
  7656. ----------1700-------------------------------
  7657. INT 17 - PRINTER - WRITE CHARACTER
  7658.     AH = 00h
  7659.     AL = character to write
  7660.     DX = printer number (00h-02h)
  7661. Return: AH = printer status
  7662.         bit 7: not busy
  7663.         6: acknowledge
  7664.         5: out of paper
  7665.         4: selected
  7666.         3: I/O error
  7667.         2: unused
  7668.         1: unused
  7669.         0: timeout
  7670. SeeAlso: AH=84h"AX",AH=F1h,INT 16/AX=FFE3h,INT 1A/AH=11h"NEC"
  7671. ----------1701-------------------------------
  7672. INT 17 - PRINTER - INITIALIZE PORT
  7673.     AH = 01h
  7674.     DX = printer number (00h-02h)
  7675. Return: AH = printer status (see AH=00h)
  7676. SeeAlso: AH=02h,INT 1A/AH=10h"NEC"
  7677. ----------1702-------------------------------
  7678. INT 17 - PRINTER - GET STATUS
  7679.     AH = 02h
  7680.     DX = printer number (00h-02h)
  7681. Return: AH = printer status (see AH=00h)
  7682. SeeAlso: AH=01h,AH=F2h,INT 1A/AH=12h"NEC"
  7683. ----------1702--DX0000-----------------------
  7684. INT 17 - INSET - INSTALLATION CHECK
  7685.     AH = 02h
  7686.     DX = 0000h
  7687.     CX = 07C3h (1987d)
  7688. Return: CX = 07C2h (1986d) if installed
  7689. Note:    INSET is a text/graphics integration program
  7690. ----------1720-------------------------------
  7691. INT 17 - PC Paint Plus 2.0 - PRINTER DRIVER
  7692.     AH = 20h
  7693.     AL = function number
  7694.         00h installation check
  7695.         Return: BX = driver version number (BH=major,BL=minor)
  7696.             CH = ??? (00h)
  7697.             CL = ???
  7698.             DX = ??? (0100h)
  7699.         Note: also enables the remaining functions
  7700.         01h set ??? flag
  7701.         02h get information
  7702.         CL = subfunction
  7703.             00h get printer type
  7704.             Return: ES:DI -> ASCIZ printer name
  7705.             01h get paper size
  7706.             DX = size index
  7707.             Return: ES:DI -> ASCIZ paper size description
  7708.             02h get ???
  7709.             Return: BX = ???
  7710.             03h get printer information???
  7711.             DX = ???
  7712.             ES:BX -> buffer for ??? (min 134 bytes)
  7713.         03h ???
  7714.         ES:BX -> ???
  7715.         04h get ???
  7716.         Return: ES:DI -> ???
  7717.         05h advance printer to next page
  7718.         Note: also clears flag set by function 01h
  7719.         06h advance printer to next page and shut down
  7720.         Note:    also clears flag set by function 01h and disables
  7721.               functions other than 00h
  7722.         07h not implemented, AX returned unchanged
  7723.     BL = printer number???
  7724. Return: AX = status
  7725.         0000h successful
  7726.         0001h invalid printer???
  7727.         0002h ???
  7728.         0003h invalid subfunction
  7729.         0005h driver disabled, must call function 00h first
  7730.         0009h unknown printer error
  7731.         000Bh printer not selected
  7732.         000Ch printer out of paper
  7733.         000Eh error while writing to serial printer
  7734.         000Fh ???
  7735.         0010h invalid function number
  7736.         0011h value out of range
  7737. ----------172400-----------------------------
  7738. INT 17 - Shamrock Software NET.24 v3.11+ - ENABLE/DISABLE API FUNCTIONS
  7739.     AX = 2400h
  7740.     DL = new state
  7741.         00h disabled
  7742.         01h enabled
  7743. Return: DL = 24h if installed
  7744.     DH = minor version number
  7745.     CX = network address of this machine
  7746.     AL = status
  7747.         00h successful
  7748.         01h timeout
  7749.         02h header error
  7750.         03h data error
  7751.         04h busy
  7752.         05h invalid parameters
  7753. SeeAlso: AX=2403h,INT 16/AX=4500h
  7754. ----------172401-----------------------------
  7755. INT 17 - Shamrock Software NET.24 v3.11+ - RECEIVE BLOCK, NO HANDSHAKE
  7756.     AX = 2401h
  7757.     BL = timeout in clock ticks
  7758. Return: AL = status (see AX=2400h)
  7759.     DX:BX -> receive buffer
  7760. SeeAlso: AX=2402h,AX=2404h,AX=2408h
  7761. ----------172402-----------------------------
  7762. INT 17 - Shamrock Software NET.24 v3.11+ - TRANSMIT BLOCK, NO HANDSHAKE
  7763.     AX = 2402h
  7764.     transmit buffer filled (see AX=2403h)
  7765. Return: AL = status (see AX=2400h)
  7766. SeeAlso: AX=2401h,AX=2403h,AX=2404h,AX=2409h
  7767. ----------172403-----------------------------
  7768. INT 17 - Shamrock Software NET.24 v3.11+ - GET STATUS AND TRANSMISSION BUFFER
  7769.     AX = 2403h
  7770. Return: AL = status (see AX=2400h)
  7771.     CX = number of characters in receive ring buffer
  7772.     DX:BX -> transmit buffer
  7773. SeeAlso: AX=2400h,AX=2402h
  7774. ----------172404-----------------------------
  7775. INT 17 - Shamrock Software NET.24 v3.11+ - SEND ACK BLOCK
  7776.     AX = 2404h
  7777.     BX = target address
  7778. Return: AL = status (see AX=2400h)
  7779. SeeAlso: AX=2402h,AX=2405h
  7780. ----------172405-----------------------------
  7781. INT 17 - Shamrock Software NET.24 v3.11+ - SEND NAK BLOCK
  7782.     AX = 2405h
  7783.     BX = target address
  7784. Return: AL = status (see AX=2400h)
  7785. SeeAlso: AX=2402h,AX=2404h
  7786. ----------172406-----------------------------
  7787. INT 17 - Shamrock Software NET.24 v3.11+ - PREPARE CHARACTER-ORIENTED RECEIVE
  7788.     AX = 2406h
  7789. Return: AL = status (see AX=2400h)
  7790. SeeAlso: AX=2407h,AX=240Ah
  7791. ----------172407-----------------------------
  7792. INT 17 - Shamrock Software NET.24 v3.11+ - RECEIVE CHARACTER FROM REMOTE
  7793.     AX = 2407h
  7794. Return: AL = status (see also AX=2400h)
  7795.         06h end of data
  7796.     DL = received character
  7797. SeeAlso: AX=2406h
  7798. ----------172408-----------------------------
  7799. INT 17 - Shamrock Software NET.24 v3.11+ - RECEIVE BLOCK, WITH HANDSHAKE
  7800.     AX = 2408h
  7801. Return: AL = status (see also AX=2400h)
  7802.         06h end of data
  7803.     CX = number of bytes in receive buffer
  7804.     DX:SI -> receive buffer
  7805. SeeAlso: AX=2401h,AX=2405h,AX=2409h
  7806. ----------172409-----------------------------
  7807. INT 17 - Shamrock Software NET.24 v3.11+ - TRANSMIT COMMAND, WITH HANDSHAKE
  7808.     AX = 2409h
  7809.     BX = target address
  7810.     CX = number of data bytes
  7811.     DL = command code to send
  7812.     DS:SI -> data bytes for command
  7813. Return: AL = status (see also AX=2400h)
  7814.         03h no response
  7815.         06h remote currently unable to perform command
  7816. SeeAlso: AX=2405h,AX=2408h
  7817. ----------17240A-----------------------------
  7818. INT 17 - Shamrock Software NET.24 v3.11+ - PREPARE CHARACTER-ORIENTED TRANSMIT
  7819.     AX = 240Ah
  7820. Return: AL = status (see AX=2400h)
  7821. SeeAlso: AX=2406h,AX=240Bh,AX=240Ch
  7822. ----------17240B-----------------------------
  7823. INT 17 - Shamrock Software NET.24 v3.11+ - TRANSMIT SINGLE CHARACTER TO REMOTE
  7824.     AX = 240Bh
  7825.     DL = character to send
  7826. Return: AL = status (see also AX=2400h)
  7827.         03h transmission error
  7828.         06h write error
  7829. SeeAlso: AX=2407h,AX=240Ah,AX=240Ch
  7830. ----------17240C-----------------------------
  7831. INT 17 - Shamrock Software NET.24 v3.11+ - END CHARACTER-ORIENTED TRANSMIT
  7832.     AX = 240Ch
  7833. Return: AL = status (see also AX=2400h)
  7834.         03h transmission error
  7835.         06h remote breaks connection
  7836. SeeAlso: AX=240Ah,AX=240Bh
  7837. ----------175000-----------------------------
  7838. INT 17 - AX (Japanese AT) PRINTER - SET PRINTER COUNTRY CODE
  7839.     AX = 5000h
  7840.     BX = country code
  7841.         0001h USA (English), 0051h Japan
  7842. Return: AL = status
  7843.         00h successful
  7844.         01h bad country code
  7845.         02h other error
  7846. SeeAlso: AX=5001h,AH=51h,INT 10/AX=5000h,INT 16/AX=5000h
  7847. ----------175001-----------------------------
  7848. INT 17 - AX (Japanese AT) PRINTER - GET PRINTER COUNTRY CODE
  7849.     AX = 5001h
  7850. Return: AL = status
  7851.         00h successful
  7852.         BX = country code
  7853.         02h error
  7854. SeeAlso: AX=5000h,AH=51h,INT 10/AX=5001h,INT 16/AX=5001h
  7855. ----------1751-------------------------------
  7856. INT 17 - AX (Japanese AT) PRINTER - JIS to Shift-JIS CONVERSION
  7857.     AH = 51h
  7858.     DX = 2-byte JIS code
  7859. Return: DX = shift-JIS value or 0000h on error
  7860. Note:    one of AH=51h and AH=52h converts from JIS (Japanese Industry Standard)
  7861.       characters to Shift-JIS characters, and the other performs the
  7862.       opposite conversion
  7863. SeeAlso: AX=5000h,AH=52h
  7864. ----------1752-------------------------------
  7865. INT 17 - AX (Japanese AT) PRINTER - Shift-JIS to JIS CONVERSION
  7866.     AH = 52h
  7867.     DX = 2-byte shift-JIS code
  7868. Return: DX = JIS code or 0000h on error
  7869. Note:    one of AH=51h and AH=52h converts from JIS (Japanese Industry Standard)
  7870.       characters to Shift-JIS characters, and the other performs the
  7871.       opposite conversion
  7872. SeeAlso: AH=51h
  7873. ----------1760-------------------------------
  7874. INT 17 - FLASHUP.COM - INSTALLATION CHECK
  7875.     AH = 60h
  7876. Return: AL = 60h
  7877.     DX = CS of resident code
  7878. Notes:    FLASHUP.COM is part of Flash-Up Windows by The Software Bottling Co.
  7879.     FLASHUP also hooks INT 10 and receives commands via INT 10/AH=09h,0Ah
  7880.       consisting of an 80h followed by the actual command
  7881. SeeAlso: INT 10/AH=09h,INT 10/AH=0Ah
  7882. ----------1761-------------------------------
  7883. INT 17 - SPEEDSCR.COM - INSTALLATION CHECK
  7884.     AH = 61h
  7885. Return: AL = 61h
  7886.     DX = CS of resident code
  7887. Note:    SPEEDSCR.COM is by The Software Bottling Co.
  7888. ----------1781-------------------------------
  7889. INT 17 - Alloy NTNX, MW386 - CANCEL JOBS FOR CURRENT USER
  7890.     AH = 81h
  7891.     AL = 00h (NTNX compatibility mode)
  7892.     CL = number of jobs to cancel
  7893. Return: AL = status
  7894.         00h success
  7895.         01h..7Fh warning
  7896.         80h general failure
  7897.         81h host overloaded (NTNX only)
  7898.         82h module busy (NTNX only)
  7899.         83h host busy (NTNX only)
  7900.         84h re-entry flag set
  7901.         85h invalid request
  7902.         86h invalid printer
  7903.         87h invalid process ID
  7904.         89h access denied
  7905.         8Ah option not available for given port type
  7906.         8Bh option not available for given task type
  7907.         91h printer busy
  7908.         C2h file not found
  7909.         C3h path not found
  7910.         C4h file access failure
  7911. Note:    cancels the last CL printouts for the current task
  7912. SeeAlso: AH=82h
  7913. ----------1782-------------------------------
  7914. INT 17 - Alloy NTNX, MW386 - CANCEL ALL JOBS FOR CURRENT USER
  7915.     AH = 82h
  7916.     AL = 00h (NTNX compatibility mode)
  7917. Return: AL = status (see AH=81h)
  7918. SeeAlso: AH=81h
  7919. ----------1783-------------------------------
  7920. INT 17 - Alloy NTNX, MW386 - SET NUMBER OF COPIES
  7921.     AH = 83h
  7922.     AL = mode
  7923.         00h NTNX compatibility
  7924.         CL = number of copies (max 99, default 1)
  7925.         02h MW386 v2+
  7926.         BX = logical device number
  7927.             00h-03h = LPT1-LPT4
  7928.             04h-07h = COM1-COM4
  7929.         CX = number of copies
  7930. Return: AL = status (see AH=81h)
  7931. Note:    in NTNX compatibility mode, this function only affects LPT1
  7932. ----------1784-------------------------------
  7933. INT 17 - Alloy NTNX, MW386 - GENERATE PRINT BREAK
  7934.     AH = 84h
  7935.     AL = mode
  7936.         00h NTNX compatibility
  7937.         02h MW386 v2+
  7938.         BX = logical device number
  7939.             00h-03h = LPT1-LPT4
  7940.             04h-07h = COM1-COM4
  7941. Note:    closes spool file and tells spooler to queue the print job (LPT1 only
  7942.       under MW386 in NTNX compatibility mode)
  7943. ----------1784-------------------------------
  7944. INT 17 - AX (Japanese AT) PRINTER - OUTPUT CHARACTER WITHOUT CONVERSION
  7945.     AH = 84h
  7946.     AL = character
  7947.     DX = printer number
  7948. Return: AH = printer status (see AH=00h)
  7949. SeeAlso: AH=00h,AH=85h
  7950. ----------1785-------------------------------
  7951. INT 17 - AX (Japanese AT) PRINTER - ENABLE/DISABLE CHARACTER CONVERSION
  7952.     AH = 85h
  7953.     AL = new state (00h enabled, 01h disabled)
  7954. SeeAlso: AH=84h"AX"
  7955. ----------1787-------------------------------
  7956. INT 17 - Alloy NTNX - SET INDOS POINTER
  7957.     AH = 87h
  7958.     AL = 00h
  7959.     CX:BX -> buffer for user-written printer drivers
  7960. Return: BX,CX destroyed
  7961. Note:    must be executed before the printer is enabled
  7962. SeeAlso: AH=8Ah
  7963. ----------1788-------------------------------
  7964. INT 17 - Alloy NTNX, MW386 - REMOVE PRINTER FROM SPOOLER
  7965.     AH = 88h
  7966.     AL = mode
  7967.         00h NTNX compatibility
  7968.         DX = NTNX printer number
  7969.             00h host LPT1
  7970.             01h host LPT2
  7971.             02h host LPT3
  7972.             03h host LPT4
  7973.             04h host COM1
  7974.             05h host COM2
  7975.             06h user's logical COM2
  7976.             07h user's terminal AUX port
  7977.             08h user's logical COM1 (MW386 only)
  7978.         01h MW386
  7979.         DX = MW386 printer number
  7980. Return: AH = status (see AH=81h)
  7981. Note:    removes specified printer from the spooler's list of printers
  7982. SeeAlso: AH=89h,AH=8Bh
  7983. ----------1789-------------------------------
  7984. INT 17 - Alloy NTNX, MW386 - ADD PRINTER TO SPOOLER
  7985.     AH = 89h
  7986.     AL = mode
  7987.         00h NTNX compatibility
  7988.         DX = NTNX printer number (see AH=88h)
  7989.         01h MW386
  7990.         DX = MW386 printer number
  7991. Return: AL = status (see AH=81h)
  7992. Note:    the specified printer is added to the spooler's list of available
  7993.       printers
  7994. SeeAlso: AH=88h,AH=8Bh
  7995. ----------178A-------------------------------
  7996. INT 17 - Alloy NTNX - ACTIVATE USER-WRITTEN PRINTER DRIVER
  7997.     AH = 8Ah
  7998.     ???
  7999. SeeAlso: AH=92h
  8000. ----------178B-------------------------------
  8001. INT 17 - Alloy MW386 - GET PHYSICAL DEVICE NUMBER FROM NAME
  8002.     AH = 8Bh
  8003.     DS:DX -> ASCIZ printer name
  8004. Return: AL = status (see also AH=81h)
  8005.         00h successful
  8006.         DX = physical device number
  8007. SeeAlso: AH=89h,AH=8Ch,INT 14/AH=20h"Alloy"
  8008. ----------178C-------------------------------
  8009. INT 17 - Alloy MW386 - GET DEVICE NAME FROM PHYSICAL DEVICE NUMBER
  8010.     AH = 8Ch
  8011.     DX = physical device number
  8012.     ES:DI -> 17-byte buffer for ASCIZ device name
  8013. Return: AL = status (see also AH=81h)
  8014.         00h successful
  8015.         ES:DI buffer filled
  8016. SeeAlso: AH=88h,AH=8Bh
  8017. ----------178D-------------------------------
  8018. INT 17 - Alloy NTNX,MW386 - RESET SPOOLER
  8019.     AH = 8Dh
  8020.     AL = 00h
  8021. Notes:    clears all buffers and resets spooler to boot-up values
  8022.     MW386 supports this function for compatibility only; it is a NOP
  8023. Return: AL = status (see AH=81h)
  8024. ----------178E-------------------------------
  8025. INT 17 - Alloy NTNX - GET INT 28 ENTRY POINT
  8026.     AH = 8Eh
  8027.     AL = 00h
  8028. Return: CX:BX -> INT 28 entry point
  8029. SeeAlso: AH=8Fh
  8030. ----------178F-------------------------------
  8031. INT 17 - Alloy NTNX - GET DOS INTERCEPT ENTRY POINT
  8032.     AH = 8Fh
  8033.     AL = 00h
  8034. Return: CX:BX -> DOS intercept routine
  8035. SeeAlso: AH=8Eh
  8036. ----------1790-------------------------------
  8037. INT 17 - Alloy NTNX, MW386 - SPOOL FILE BY NAME
  8038.     AH = 90h
  8039.     AL = mode
  8040.         00h NTNX compatibility
  8041.         DL = printer code (FFh=current) (NTNX, MW386 v1.x only)
  8042.         DH = number of copies (FFh=current) (NTNX, MW386 v1.x only)
  8043.         02h MW386 v2+
  8044.         BX = logical device number
  8045.             00h-03h = LPT1-LPT4
  8046.             04h-07h = COM1-COM4
  8047.     CX:SI -> ASCIZ pathname
  8048. Return: AL = status (see AH=81h)
  8049. Note:    in mode 00h, the file is always sent to logical LPT1
  8050. SeeAlso: AH=A0h
  8051. ----------1791-------------------------------
  8052. INT 17 - Alloy NTNX, MW386 - GET USER NUMBER AND CURRENT PRINTER
  8053.     AH = 91h
  8054.     AL = mode
  8055.         00h NTNX compatibility
  8056.         Return: CX = user number (00h = host)
  8057.             DX = currently selected printer number (00h-08h)
  8058.         01h MW386
  8059.         Return: CX = user number
  8060.             DX = physical dev number of currently selected printer
  8061.         02h MW386 v2+
  8062.         BX = logical device number
  8063.             00h-03h = LPT1-LPT4
  8064.             04h-07h = COM1-COM4
  8065.         Return: CX = user number
  8066.             DX = physical device number
  8067. Return: AL = status (see AH=81h)
  8068. SeeAlso: AH=8Ch
  8069. ----------1792-------------------------------
  8070. INT 17 - Alloy NTNX - CHECK PRINTER DRIVER
  8071.     AH = 92h
  8072.     AL = 00h
  8073.     CL = 00h
  8074. Return: CL = driver state
  8075.         01h initialized
  8076.         80h not initialized
  8077.     AX = status (see AH=81h)
  8078. SeeAlso: AH=8Ah
  8079. ----------1794-------------------------------
  8080. INT 17 - Alloy NTNX, MW386 - SELECT PRINTER
  8081.     AH = 94h
  8082.     AL = mode
  8083.         00h NTNX compatibility
  8084.         DX = NTNX printer number (see AH=88h)
  8085.         01h MW386
  8086.         DX = MW386 printer number
  8087.         02h MW386 v2+
  8088.         BX = logical printer number
  8089.         DX = MW386 printer number
  8090. Return: AL = status (see AH=81h)
  8091. Note:    modes 00h and 01h affect only logical LPT1
  8092. SeeAlso: AH=8Bh,AH=95h
  8093. ----------1795-------------------------------
  8094. INT 17 - Alloy NTNX, MW386 - GET CURRENT PRINTER
  8095.     AH = 95h
  8096.     AL = mode
  8097.         00h NTNX compatibility
  8098.         Return: DX = NTNX printer number (see AH=88h)
  8099.                 (FFFFh if current printer not compatible with NTNX)
  8100.         01h MW386
  8101.         Return: DX = MW386 printer number
  8102.         02h MW386 v2+
  8103.         BX = logical device number
  8104.             00h-03h = LPT1-LPT4
  8105.             04h-07h = COM1-COM4
  8106.         Return: DX = MW386 printer number (FFFFh = none)
  8107. Return: AL = status (see AH=81h)
  8108. Note:    modes 00h and 01h return the printer number of logical LPT1 only
  8109. SeeAlso: AH=94h
  8110. ----------1796-------------------------------
  8111. INT 17 - Alloy NTNX - SET SERIAL PORT PARAMETERS
  8112.     AH = 96h
  8113.     AL = 00h
  8114. Note:    documentation states that this is a NOP, doing only XOR AX,AX before
  8115.       returning
  8116. SeeAlso: INT 14/AH=24h
  8117. ----------1797-------------------------------
  8118. INT 17 - Alloy NTNX, MW386 - SET DATA DRIVEN PRINT BREAK
  8119.     AH = 97h
  8120.     AL = mode
  8121.         00h NTNX compatibility
  8122.         02h MW386 v2+
  8123.         BX = logical device number
  8124.             00h-03h = LPT1-LPT4
  8125.             04h-07h = COM1-COM4
  8126.     CH,CL,DH = three character break sequence
  8127.     DL = subfunction
  8128.         00h set break string
  8129.         else reset break
  8130. Return: AL = status (see AH=81h)
  8131. Notes:    mode 00h affects only logical LPT1
  8132.     when the break string is encountered, the spool file will be closed and
  8133.       queued for printing automatically
  8134.     the break string is not permanently saved, and will be reset each time
  8135.       MW386 or the user is rebooted
  8136. SeeAlso: AH=9Bh
  8137. ----------1798-------------------------------
  8138. INT 17 - Alloy NTNX,MW386 - RESTART PRINTER
  8139.     AH = 98h
  8140.     AL = 00h
  8141.     DL = printer number (FFh=current)
  8142. Return: AL = status
  8143.         00h successful
  8144.         01h incorrect printer
  8145.         02h task not found
  8146. Note:    MW386 supports this function for compatibility only; it is a NOP
  8147. ----------1799-------------------------------
  8148. INT 17 - Alloy NTNX, MW386 - GET/SET PRINTER MODE
  8149.     AH = 99h
  8150.     AL = mode
  8151.         00h NTNX compatibility
  8152.         DL = NTNX printer number (see AH=88h)
  8153.             (FFh = task's current logical LPT1)
  8154.         DH = mode
  8155.             bit 0: get mode if 1, set mode if 0
  8156.             1: private ("attached")
  8157.             2: direct instead of spooled
  8158.             3-7 reserved (0)
  8159.         01h MW386
  8160.         DX = MW386 printer number
  8161.         CL = mode (as for DH above)
  8162. Return: AL = status (see AH=81h)
  8163.     DH = mode (bits 1 and 2 set as above)
  8164.     DL = printer owner's user number if not spooled
  8165. ----------179A-------------------------------
  8166. INT 17 - Alloy NTNX,MW386 - SET TAB EXPANSION
  8167.     AH = 9Ah
  8168.     AL = mode
  8169.         00h NTNX compatibility
  8170.         DX = NTNX printer number (see AH=88h)
  8171.             (FFFFh = current logical LPT1)
  8172.         01h MW386
  8173.         DX = MW386 printer number
  8174.     CL = tab length (00h = no expansion, 01h-63h = spaces per tab)
  8175. Return: AL = status (see AH=81h)
  8176. Note:    beginning with MW386 v2.0, tab expansion is set on a per-printer basis
  8177.       rather than a per-user basis; NTNX and MW386 v1.x ignore DX
  8178. SeeAlso: AH=A4h
  8179. ----------179B-------------------------------
  8180. INT 17 - Alloy NTNX,MW386 - SET PRINT BREAK TIMEOUT
  8181.     AH = 9Bh
  8182.     AL = mode
  8183.         00h NTNX compatibility
  8184.         CX = timeout value in clock ticks (1/18 sec) (00h = never)
  8185.         01h MW386
  8186.         CX = timeout value in seconds (00h = never)
  8187.         02h MW386 v2+
  8188.         BX = logical device number
  8189.             00h-03h = LPT1-LPT4
  8190.             04h-07h = COM1-COM4
  8191.         CX = timeout value in seconds (00h = never)
  8192. Return: AL = status (see AH=81h)
  8193. Notes:    modes 00h and 01h affect only the current logical LPT1
  8194.     if no data is sent to a printer for the specified amount of time, the
  8195.       spool file will be closed and queued for printing automatically
  8196. SeeAlso: AH=97h
  8197. ----------17A0-------------------------------
  8198. INT 17 - Alloy MW386 - SPOOL COPY OF FILE
  8199.     AH = A0h
  8200.     AL = mode
  8201.         00h NTNX compatibility
  8202.         DX = ??? (NTNX, MW386 v1.x only)
  8203.         02h MW386 v2+
  8204.         BX = logical device number
  8205.             00h-03h = LPT1-LPT4
  8206.             04h-07h = COM1-COM4
  8207.     CX:SI -> ASCIZ pathname
  8208. Return: AL = status (see AH=81h)
  8209. Notes:    makes a copy of the specified file in the spooler's directory, allowing
  8210.       the original file to be modified or deleted while the copy is printed
  8211.     in mode 00h, the file is printed on logical LPT1
  8212. SeeAlso: AH=90h
  8213. ----------17A4-------------------------------
  8214. INT 17 - Alloy MW386 - ENABLE/DISABLE FORM FEED
  8215.     AH = A4h
  8216.     AL = new state
  8217.         00h form feed after end of print job disabled
  8218.         01h form feed enabled
  8219. Return: AL = status (see AH=81h)
  8220. Note:    only affects the current logical LPT1
  8221. SeeAlso: AH=9Ah,AH=A6h,INT 7F/AH=05h"NTNX (Host)"
  8222. ----------17A6-------------------------------
  8223. INT 17 - Alloy MW386 - ENABLE/DISABLE BANNER PAGE
  8224.     AH = A6h
  8225.     AL = new state
  8226.         00h banner page before print job disabled
  8227.         01h banner page enabled
  8228. Return: AL = status (see AH=81h)
  8229. Note:    only affects the current logical LPT1
  8230. SeeAlso: AH=A4h
  8231. ----------17A7-------------------------------
  8232. INT 17 - Alloy MW386 v2+ - GET/SET SPOOL FLAGS
  8233.     AH = A7h
  8234.     AL = spool flags
  8235.         bit 0: banner page enabled (see AH=A4h)
  8236.         1: form feed enabled (see AH=A6h)
  8237.         2-6: reserved (0)
  8238.         7: set flags if 1, get flags if 0
  8239.     BX = logical device number
  8240.         00h-03h = LPT1-LPT4
  8241.         04h-07h = COM1-COM4
  8242. Return: AL = status (see AH=81h)
  8243. Note:    the documentation does not state which register contains the result of
  8244.       a GET
  8245. SeeAlso: AH=A4h,AH=A6h
  8246. ----------17A8-------------------------------
  8247. INT 17 - Alloy MW386 - DEFINE TEMPORARY FILENAME
  8248.     AH = A8h
  8249.     CX:SI -> ASCIZ filename without extension (max 8 chars)
  8250. Return: AL = status (see AH=81h)
  8251. Note:    allows application to specify banner page filename for spool files
  8252.       collected from the application's printer output
  8253. SeeAlso: AH=A9h
  8254. ----------17A9-------------------------------
  8255. INT 17 - Alloy MW386 - CHANGE TEMPORARY SPOOL DRIVE
  8256.     AH = A9h
  8257.     AL = new spool drive (2=C:,3=D:,etc)
  8258. Return: AL = status (see AH=81h)
  8259. Note:    does not remove previous spooling directory since jobs may be pending
  8260. SeeAlso: AH=A8h
  8261. ----------17AA-------------------------------
  8262. INT 17 - Alloy MW386 v2+ - GET REAL-TIME PRINTER STATUS
  8263.     AH = AAh
  8264.     AL = mode
  8265.         00h NTNX
  8266.         DX = NTNX printer number (see AH=88h)
  8267.         01h MW386
  8268.         DX = MW386 printer number
  8269. Return: AH = instantaneous printer status
  8270.         00h printer ready
  8271.         01h not ready
  8272.         12h off line
  8273.         13h out of paper
  8274.         14h general device failure
  8275.         15h device timeout
  8276.         16h bad device number
  8277. ----------17AF-------------------------------
  8278. INT 17 - Alloy MW386 - CHECK SPOOLER
  8279.     AH = AFh
  8280. Return: AX = 55AAh if spooler available
  8281. ----------17C0-------------------------------
  8282. INT 17 - PC Magazine PCSpool - GET CONTROL BLOCK ADDRESS
  8283.     AH = C0h
  8284.     DX = printer port (0-3)
  8285. Return: ES:BX -> control block (see below)
  8286. SeeAlso: AH=C1h
  8287.  
  8288. Format of control block:
  8289. Offset    Size    Description
  8290.  00h    WORD    printer number
  8291.  02h    WORD    address of printer status port
  8292.  04h    WORD    number of first record in queue
  8293.  06h    WORD    number of last record in queue
  8294.  08h    DWORD    characters already printed
  8295.  0Ch    DWORD    number of characters remaining
  8296.  10h    DWORD    pointer to dequeue buffer
  8297.  14h    DWORD    previous count of characters printed
  8298.  18h    DWORD    number of clock ticks taken to print them
  8299.  1Ch    WORD    offset of next character to output
  8300.  1Eh    WORD    offset of next character to print
  8301.  20h    WORD    pointer to spooling queue record
  8302.  22h    BYTE    current spooling status
  8303.  23h    BYTE    current printer status:
  8304.         00h OK
  8305.         01h not ready
  8306.         02h paused with message
  8307.         03h paused
  8308.         04h initializing
  8309.         FEh non-existent port
  8310.         FFh not spooled
  8311.  24h    BYTE    current control record type
  8312.  25h    WORD    observed printer speed
  8313.  27h    WORD    characters to print per service
  8314.  29h    BYTE    01h if disk write needed
  8315.  2Ah    BYTE    01h if queued data should be flushed
  8316.  2Bh    BYTE    01h to update cps status
  8317. ----------17C1--------------------------------
  8318. INT 17 - PC Magazine PCSpool - BUILD PAUSE CONTROL RECORD
  8319.     AH = C1h
  8320.     DX = printer port (0-3)
  8321.     DS:SI -> ASCIIZ string to save for display
  8322. Note:    flushes pending writes
  8323. SeeAlso: AH=C0h,AH=C2h
  8324. ----------17C2-------------------------------
  8325. INT 17 - PC Magazine PCSpool - FLUSH PENDING WRITES
  8326.     AH = C2h
  8327.     DX = printer port (0-3)
  8328. SeeAlso: AH=C3h
  8329. ----------17C3-------------------------------
  8330. INT 17 - PC Magazine PCSpool - CANCEL PRINTER QUEUE (FLUSH ALL QUEUED OUTPUT)
  8331.     AH = C3h
  8332.     DX = printer port (0-3)
  8333. SeeAlso: AH=C2h,AH=C7h
  8334. ----------17C4-------------------------------
  8335. INT 17 - PC Magazine PCSpool - QUERY SPOOLER ACTIVE
  8336.     AH = C4h
  8337. Return: DI = B0BFh
  8338.     SI = segment
  8339. ----------17C5-------------------------------
  8340. INT 17 - PC Magazine PCSpool - JOB SKIP PRINTER QUEUE
  8341.     AH = C5h
  8342.     DX = printer port (0-3)
  8343. Note:    cancels up to the pause record 
  8344. ----------17C6-------------------------------
  8345. INT 17 - PC Magazine PCSpool - CHECK PRINTER QUEUE STATUS
  8346.     AH = C6h
  8347.     DX = printer port (0-3)
  8348. Return: AX = 0 printer not active or at pause
  8349.        = 1 printer busy
  8350. ----------17C7-------------------------------
  8351. INT 17 - PC Magazine PCSpool - CLOSE QUEUE
  8352.     AH = C7h
  8353.     DX = printer port (0-3)
  8354. SeeAlso: AH=C3h
  8355. ----------17CD00-----------------------------
  8356. INT 17 - INSET - EXECUTE COMMAND STRING
  8357.     AX = CD00h
  8358.     DS:DX -> ASCIZ command string (max 80 bytes)
  8359. Return: CX = 07C2h (1986d)
  8360. Note:    user interface menus pop up after last command, unless that command
  8361.     exits INSET
  8362. ----------17CD01-----------------------------
  8363. INT 17 - INSET - GET IMAGE SIZE
  8364.     AX = CD01h
  8365.     DS:DX -> ASCIZ name of image file
  8366. Return: AX = height in 1/720th inch
  8367.     BX = width in 1/720th inch
  8368.     CX = 07C2h (1986d)
  8369. ----------17CD02-----------------------------
  8370. INT 17 - INSET - INITIALIZE
  8371.     AX = CD02h
  8372. Return: CX = 07C2h (1986d)
  8373. Note:    all open files are closed and the printer is reset
  8374. SeeAlso: AX=CD04h
  8375. ----------17CD03-----------------------------
  8376. INT 17 - INSET - EXECUTE INSET MENU WITHIN OVERRIDE MODE
  8377.     AX = CD03h
  8378. Return: CX = 07C2h (1986d)
  8379. ----------17CD04-----------------------------
  8380. INT 17 - INSET - INITIALIZE LINKED MODE
  8381.     AX = CD04h
  8382.     ES:SI -> FAR routine for linked mode
  8383. Return: CX = 07C2h
  8384. Note:    calling sequence for linked-mode routine
  8385.     AL = 00h send character in BL to printer
  8386.        = 01h send CX bytes from DS:DX to printer
  8387.        = 02h move print head to horizontal starting position of image
  8388.     return code for linked-mode routine:
  8389.     AX = 0000h success
  8390.        = 0001h failure
  8391. SeeAlso: AX=CD02h,AX=CD08h
  8392. ----------17CD05-----------------------------
  8393. INT 17 - INSET - START MERGING IMAGE INTO TEXT
  8394.     AX = CD05h
  8395.     DS:DX -> ASCIZ name of PIX file
  8396.     CX = left margin of text in 1/720th inch
  8397. Return: AH = printer type
  8398.         00h page-oriented (multiple images may be placed side-by-side)
  8399.         01h line-oriented (use AX=CD06h for vertical paper movement)
  8400.     CX = 07C2h (1986d)
  8401. SeeAlso: AX=CD07h
  8402. ----------17CD06-----------------------------
  8403. INT 17 - INSET - GRAPHICS LINE FEED
  8404.     AX = CD06h
  8405. Return: AH = completion status
  8406.         00h image complete
  8407.         01h image incomplete
  8408.     CX = 07C2h (1986d)
  8409. SeeAlso: AX=CD09h
  8410. ----------17CD07-----------------------------
  8411. INT 17 - INSET - FLUSH GRAPHICS FROM MERGE BUFFER
  8412.     AX = CD07h
  8413. Return: CX = 07C2h
  8414. SeeAlso: AX=CD05h
  8415. ----------17CD08-----------------------------
  8416. INT 17 - INSET - CANCEL LINK MODE
  8417.     AX = CD08h
  8418. Return: CX = 07C2h
  8419. SeeAlso: AX=CD04h
  8420. ----------17CD09-----------------------------
  8421. INT 17 - INSET - ALTER TEXT LINE SPACING
  8422.     AX = CD09h
  8423.     CX = line spacing in 1/720th inch
  8424. Return: CX = 07C2h
  8425. Note:    not yet implemented, line spacing is currently fixed at 1/6 inch
  8426. SeeAlso: AX=CD06h
  8427. ----------17CD0A-----------------------------
  8428. INT 17 - INSET - GET SETUP
  8429.     AX = CD0Ah
  8430.     DS:DX -> buffer for IN.SET data
  8431. Return: CX = 07C2h
  8432. ----------17CD0B-----------------------------
  8433. INT 17 - INSET - START GETTING SCALED IMAGE
  8434.     AX = CD0Bh
  8435.     DS:SI -> ASCIZ pathname of .PIX file
  8436.     BX = number of bitplanes
  8437.     CX = number of rows in output bitmap
  8438.     DX = number of columns in output bitmap
  8439. Return: AX = status
  8440.         0000h OK
  8441.         FFFFh error    
  8442. Note:    image is returned in strips by repeated calls to AX=CD0Ch
  8443. ----------17CD0C-----------------------------
  8444. INT 17 - INSET - GET NEXT IMAGE STRIP
  8445.     AX = CD0Ch
  8446. Return:    AX = status
  8447.         0000h OK but not complete
  8448.         0001h OK and image complete
  8449.         FFFFh error
  8450.     DS:SI -> buffer (max 4K) for bit map strip 
  8451.     CX = start row
  8452.     DX = number of rows
  8453.     BX = offset in bytes between bit planes
  8454. Note:    buffer may be overwritten by subsequent calls
  8455. SeeAlso: AX=CD0Bh
  8456. ----------17F0-------------------------------
  8457. INT 17 - NorthNet Jetstream API - INSTALLATION CHECK
  8458.     AH = F0h
  8459.     DX = printer port (0-3)
  8460. Return: AX = 0001h Jetstream present
  8461.          else  non-Jetstream port
  8462. Note:    NorthNet Jetstream is a high-performance DMA-driven parallel card able
  8463.       to drive printers at up to 80000 characters per second
  8464. ----------17F1-------------------------------
  8465. INT 17 - NorthNet Jetstream API - PRINT DATA BUFFER
  8466.     AH = F1h
  8467.     CX = data buffer length
  8468.     DX = printer port (0-3)
  8469.     DS:SI -> data buffer
  8470. Return: AX = status
  8471.         0000h printer not ready (see also AH=02h)
  8472.         other printing started
  8473. SeeAlso: AH=00h,AH=F2h,AH=F3h,AH=F5h
  8474. ----------17F2-------------------------------
  8475. INT 17 - NorthNet Jetstream API - GET PRINT PROGRESS STATUS
  8476.     AH = F2h
  8477.     DX = printer port (0-3)
  8478. Return: AX = status
  8479.         0000h prior print request finished
  8480.         other number of characters left to print
  8481. SeeAlso: AH=02h,AH=F1h,AH=F3h
  8482. ----------17F3-------------------------------
  8483. INT 17 - NorthNet Jetstream API - ABORT PRINT OPERATION
  8484.     AH = F3h
  8485.     DX = printer port (0-3)
  8486. Return: AX = number of unprinted characters due to abort
  8487. SeeAlso: AH=F1h,AH=F4h
  8488. ----------17F4-------------------------------
  8489. INT 17 - NorthNet Jetstream API - SET COMPLETION (POST) ADDRESS
  8490.     AH = F4h
  8491.     DX = printer port (0-3)
  8492.     DS:DS -> FAR post address (called with interrupts on)
  8493. SeeAlso: AH=F1h,AH=F3h
  8494. ----------17F5-------------------------------
  8495. INT 17 - NorthNet Jetstream API - PRINT DATA BUFFER FROM EXTENDED MEMORY
  8496.     AH = F5h
  8497.     CX = data buffer length
  8498.     DX = printer port (0-3)
  8499.     DS:SI -> data buffer (32-bit physical address)
  8500. Return: AX = status
  8501.         0000h printer not ready (see also AH=02h)
  8502.         other printing started
  8503. SeeAlso: AH=F1h
  8504. ----------18---------------------------------
  8505. INT 18 - START CASSETTE BASIC
  8506. Note:    only PCs produced by IBM contain BASIC in ROM, so the action is
  8507.       unpredicatable on compatibles; this interrupt often reboots the
  8508.       system, and often has no effect at all
  8509. SeeAlso: INT 86"NetBIOS"
  8510. ----------1800-------------------------------
  8511. INT 18 - NEC PC-9800 series - KEYBOARD - GET KEYSTROKE
  8512.     AH = 00h
  8513. Return: AX = keystroke
  8514. SeeAlso: AH=01h,AH=02h,INT 16/AH=00h
  8515. ----------1801-------------------------------
  8516. INT 18 - NEC PC-9800 series - KEYBOARD - CHECK FOR KEYSTROKE
  8517.     AH = 01h
  8518. Return: ZF set if no keystroke available
  8519.     ZF clear if keystroke available
  8520.         AX = keystroke
  8521. SeeAlso: AH=00h,AH=02h,INT 16/AH=01h
  8522. ----------1802-------------------------------
  8523. INT 18 - NEC PC-9800 series - KEYBOARD - GET SHIFT STATUS
  8524.     AH = 02h
  8525. Return: AL = shift flags
  8526. SeeAlso: AH=00h,AH=02h,AH=03h,AH=04h,INT 16/AH=02h
  8527. ----------1803-------------------------------
  8528. INT 18 - NEC PC-9800 series - KEYBOARD - INITIALIZE
  8529.     AH = 03h
  8530.     ???
  8531. Return: ???
  8532. SeeAlso: AH=00h,AH=04h
  8533. ----------1804-------------------------------
  8534. INT 18 - NEC PC-9800 series - KEYBOARD - KEY PRESSED
  8535.     AH = 04h
  8536.     ???
  8537. Return: ???
  8538. Note:    details are not available at this time
  8539. SeeAlso: AH=00h,AH=02h,INT 16/AH=00h,INT 16/AH=01h,INT 16/AH=02h
  8540. ----------18---------------------------------
  8541. INT 18 - NEC PC-9800 series - VIDEO
  8542.     AH = function
  8543.         0Ah set video mode
  8544.         0Bh get video mode
  8545.         0Ch start text screen display
  8546.         0Dh end text screen display
  8547.         0Eh set single display area
  8548.         0Fh set multiple display area
  8549.         10h set cursor shape
  8550.         11h display cursor
  8551.         12h terminate cursor
  8552.         13h set cursor position
  8553.         14h read font patter
  8554.         16h initialize text video RAM
  8555.         1Ah define user character
  8556.     ???
  8557. Return: ???
  8558. Notes:    details are not available at this time
  8559.     text video RAM is located at segments A000h (characters) and A200h
  8560.       (attributes)
  8561. ----------19---------------------------------
  8562. INT 19 - SYSTEM - BOOTSTRAP LOADER
  8563.    Reboot the system without clearing memory or restoring interrupt vectors.
  8564.    Because interrupt vectors are preserved, this interrupt usually causes a
  8565.    system hang if any TSRs have hooked vectors from 00h through 1Ch,
  8566.    particularly INT 08.
  8567.  
  8568.    Usually, the BIOS will try to read sector 1, head 0, track 0 from drive A:
  8569.    to 0000h:7C00h.  If this fails, and a hard disk is installed, the BIOS will
  8570.    read sector 1, head 0, track 0 of the first hard disk.  This sector should
  8571.    contain a master bootstrap loader and a partition table.  After loading the
  8572.    master boot sector at 0000h:7C00h, the master bootstrap loader is given
  8573.    control.  It will scan the partition table for an active partition, and will
  8574.    then load the operating system's bootstrap loader (contained in the first
  8575.    sector of the active partition) and give it control.
  8576.  
  8577.    True IBM PCs issue an INT 18 if neither floppy nor hard disk have a valid
  8578.    boot sector.
  8579.  
  8580. Notes:    to accomplish a warm boot equivalent to Ctrl-Alt-Del, store 1234h in
  8581.       0040h:0072h and jump to FFFFh:0000h.    For a cold boot equivalent to
  8582.       a reset, store 0000h at 0040h:0072h before jumping.
  8583.     VDISK.SYS hooks this interrupt to allow applications to find out how
  8584.       much extended memory has been used by VDISKs (see below).  DOS 3.3+
  8585.       PRINT hooks INT 19 but does not set up a correct VDISK header block
  8586.       at the beginning of its INT 19 handler segment, thus causing some
  8587.       programs to overwrite extended memory which is already in use.
  8588.     default handler is at F000h:E6F2h for 100% compatible BIOSes
  8589. SeeAlso: INT 14/AH=17h,INT 18
  8590.  
  8591. Format of VDISK header block (at beginning of INT 19 handler's segment):
  8592. Offset    Size    Description
  8593.  00h 18 BYTEs    n/a (for VDISK.SYS, the device driver header)
  8594.  12h 11 BYTEs    signature string "VDISK     Vn.m" for VDISK.SYS version n.m
  8595.  1Dh 15 BYTEs    n/a
  8596.  2Ch  3 BYTEs    linear address of first byte of available extended memory
  8597.  
  8598. Format of hard disk master boot sector:
  8599. Offset    Size    Description
  8600.  00h 446 BYTEs    Master bootstrap loader code
  8601. 1BEh 16 BYTEs    partition record for partition 1 (see below)
  8602. 1CEh 16 BYTEs    partition record for partition 2
  8603. 1DEh 16 BYTEs    partition record for partition 3
  8604. 1EEh 16 BYTEs    partition record for partition 4
  8605. 1FEh    WORD    signature, AA55h indicates valid boot block
  8606.  
  8607. Format of partition record:
  8608. Offset    Size    Description
  8609.  00h    BYTE    boot indicator (80h = active partition)
  8610.  01h    BYTE    partition start head
  8611.  02h    BYTE    partition start sector (bits 0-5)
  8612.  03h    BYTE    partition start track (bits 8,9 in bits 6,7 of sector)
  8613.  04h    BYTE    operating system indicator (see below)
  8614.  05h    BYTE    partition end head
  8615.  06h    BYTE    partition end sector (bits 0-5)
  8616.  07h    BYTE    partition end track (bits 8,9 in bits 6,7 of sector)
  8617.  08h    DWORD    sectors preceding partition
  8618.  0Ch    DWORD    length of partition in sectors
  8619.  
  8620. Values for operating system indicator:
  8621.  00h empty
  8622.  01h DOS 12-bit FAT
  8623.  02h XENIX root file system
  8624.  03h XENIX /usr file system (obsolete)
  8625.  04h DOS 16-bit FAT
  8626.  05h DOS 3.3+ extended partition
  8627.  06h DOS 3.31+ Large File System
  8628.  07h QNX
  8629.  07h OS/2 HPFS
  8630.  07h Advanced Unix
  8631.  08h AIX bootable partition, SplitDrive
  8632.  09h AIX data partition
  8633.  09h Coherent filesystem
  8634.  0Ah OPUS
  8635.  0Ah Coherent swap partition
  8636.  10h OPUS
  8637.  24h NEC MS-DOS 3.x
  8638.  40h VENIX 80286
  8639.  50h Disk Manager, read-only partition
  8640.  51h Disk Manager, read/write partition
  8641.  51h Novell???
  8642.  52h CP/M
  8643.  52h Microport System V/386
  8644.  56h GoldenBow VFeature
  8645.  61h SpeedStor
  8646.  63h Unix SysV/386, 386/ix
  8647.  63h Mach, MtXinu BSD 4.3 on Mach
  8648.  63h GNU HURD
  8649.  64h Novell NetWare
  8650.  75h PC/IX
  8651.  80h Minix v1.1 - 1.4a
  8652.  81h Minix v1.4b+
  8653.  81h Linux
  8654.  82h Linux Swap partition (planned)
  8655.  93h Amoeba file system
  8656.  94h Amoeba bad block table
  8657.  B7h BSDI file system (secondarily swap)
  8658.  B8h BSDI swap partition (secondarily file system)
  8659.  C6h DR-DOS 6.0 LOGIN.EXE-secured partition
  8660.  DBh CP/M, Concurrent CP/M, Concurrent DOS
  8661.  DBh CTOS (Convergent Technologies OS)
  8662.  E1h SpeedStor 12-bit FAT extended partition
  8663.  E4h SpeedStor 16-bit FAT extended partition
  8664.  F2h DOS 3.3+ secondary
  8665.  FEh LANstep
  8666.  FFh Xenix bad block table
  8667. ----------1A00-------------------------------
  8668. INT 1A - TIME - GET SYSTEM TIME
  8669.     AH = 00h
  8670. Return: CX:DX = number of clock ticks since midnight
  8671.     AL = midnight flag, nonzero if midnight passed since time last read
  8672. Notes:    there are approximately 18.2 clock ticks per second, 1800B0h per 24 hrs
  8673.     IBM and many clone BIOSes set the flag for AL rather than incrementing
  8674.       it, leading to loss of a day if two consecutive midnights pass
  8675.       without a request for the time (e.g. if the system is on but idle)
  8676. SeeAlso: AH=01h,AH=02h,INT 21/AH=2Ch
  8677. ----------1A01-------------------------------
  8678. INT 1A - TIME - SET SYSTEM TIME
  8679.     AH = 01h
  8680.     CX:DX = number of clock ticks since midnight
  8681. SeeAlso: AH=00h,AH=03h,INT 21/AH=2Dh
  8682. ----------1A02-------------------------------
  8683. INT 1A - TIME - GET REAL-TIME CLOCK TIME (AT,XT286,PS)
  8684.     AH = 02h
  8685. Return: CF clear if successful
  8686.         CH = hour (BCD)
  8687.         CL = minutes (BCD)
  8688.         DH = seconds (BCD)    
  8689.         DL = daylight savings flag (00h standard time, 01h daylight time)
  8690.     CF set on error (i.e. clock not running or in middle of update)
  8691. SeeAlso: AH=00h
  8692. ----------1A03-------------------------------
  8693. INT 1A - TIME - SET REAL-TIME CLOCK TIME (AT,XT286,PS)
  8694.     AH = 03h
  8695.     CH = hour (BCD)
  8696.     CL = minutes (BCD)
  8697.     DH = seconds (BCD)
  8698.     DL = daylight savings flag (00h standard time, 01h daylight time)
  8699. SeeAlso: AH=01h
  8700. ----------1A04-------------------------------
  8701. INT 1A - TIME - GET REAL-TIME CLOCK DATE (AT,XT286,PS)
  8702.     AH = 04h
  8703. Return: CF clear if successful
  8704.         CH = century (BCD)
  8705.         CL = year (BCD)
  8706.         DH = month (BCD)
  8707.         DL = day (BCD)
  8708.     CF set on error
  8709. SeeAlso: AH=02h,AH=05h,INT 21/AH=2Ah
  8710. ----------1A05-------------------------------
  8711. INT 1A - TIME - SET REAL-TIME CLOCK DATE (AT,XT286,PS)
  8712.     AH = 05h
  8713.     CH = century (BCD)
  8714.     CL = year (BCD)
  8715.     DH = month (BCD)
  8716.     DL = day (BCD)
  8717. SeeAlso: AH=04h,INT 21/AH=2Bh
  8718. ----------1A06-------------------------------
  8719. INT 1A - TIME - SET ALARM (AT,XT286,PS)
  8720.     AH = 06h
  8721.     CH = hour (BCD)
  8722.     CL = minutes (BCD)
  8723.     DH = seconds (BCD)
  8724. Return: CF set on error (alarm already set or clock stopped for update)
  8725.     CF clear if successful
  8726. Note:    the alarm occurs every 24 hours until turned off, invoking INT 4A each
  8727.       time
  8728. SeeAlso: AH=07h,INT 4A
  8729. ----------1A07-------------------------------
  8730. INT 1A - TIME - CANCEL ALARM (AT,XT286,PS)
  8731.     AH = 07h
  8732. Return: alarm disabled
  8733. Note:    does not disable the real-time clock's IRQ
  8734. SeeAlso: AH=06h,INT 70
  8735. ----------1A08-------------------------------
  8736. INT 1A - TIME - SET RTC ACTIVATED POWER ON MODE (CONVERTIBLE)
  8737.     AH = 08h
  8738.     CH = hours in BCD
  8739.     CL = minutes in BCD
  8740.     DH = seconds in BCD
  8741. ----------1A09-------------------------------
  8742. INT 1A - TIME - READ RTC ALARM TIME AND STATUS (CONV,PS30)
  8743.     AH = 09h
  8744. Return: CH = hours in BCD
  8745.     CL = minutes in BCD
  8746.     DH = seconds in BCD
  8747.     DL = alarm status
  8748.         00h alarm not enabled
  8749.         01h alarm enabled but will not power up system
  8750.         02h alarm will power up system
  8751. ----------1A0A-------------------------------
  8752. INT 1A - TIME - READ SYSTEM-TIMER DAY COUNTER (XT2,PS)
  8753.     AH = 0Ah
  8754. Return: CF set on error
  8755.     CF clear if successful
  8756.         CX = count of days since Jan 1,1980
  8757. SeeAlso: AH=04h,AH=0Bh
  8758. ----------1A0B-------------------------------
  8759. INT 1A - TIME - SET SYSTEM-TIMER DAY COUNTER (XT2,PS)
  8760.     AH = 0Bh
  8761.     CX = count of days since Jan 1,1980
  8762. Return: CF set on error
  8763.     CF clear if successful
  8764. SeeAlso: AH=05h,AH=0Ah
  8765. ----------1A10-------------------------------
  8766. INT 1A - NEC PC-9800 series - PRINTER - INITIALIZE
  8767.     AH = 10h
  8768.     ???
  8769. Return: ???
  8770. SeeAlso: AH=11h,AH=12h,INT 17/AH=01h
  8771. ----------1A11-------------------------------
  8772. INT 1A - NEC PC-9800 series - PRINTER - OUTPUT CHARACTER
  8773.     AH = 11h
  8774.     ???
  8775. Return: ???
  8776. SeeAlso: AH=10h,AH=12h,INT 17/AH=00h
  8777. ----------1A12-------------------------------
  8778. INT 1A - NEC PC-9800 series - PRINTER - SENSE STATUS
  8779.     AH = 12h
  8780.     ???
  8781. Return: ???
  8782. SeeAlso: AH=10h,AH=11h,INT 17/AH=02h
  8783. ----------1A3601-----------------------------
  8784. INT 1A - WORD PERFECT v5.0 Third Party Interface - INSTALLATION CHECK
  8785.     AX = 3601h
  8786. Return: DS:SI = routine to monitor keyboard input, immediately preceded by the
  8787.         ASCIZ string "WPCORP\0"
  8788. Notes:    WordPerfect 5.0 will call this interrupt at start up to determine if a
  8789.       third party product wants to interface with it.  The third party
  8790.       product must intercept this interrupt and return the address of a
  8791.       keyboard monitor routine.
  8792.     Before checking for keyboard input, and after every key entered by the
  8793.       user, Word Perfect will call the routine whose address was provided
  8794.       in DS:SI with the following parameters:
  8795.         Entry:    AX = key code or 0
  8796.             BX = WordPerfect state flag
  8797.         Exit:    AX = 0 or key code
  8798.             BX = 0 or segment address of buffer with key codes
  8799.     See the "WordPerfect 5.0 Developer's Toolkit" for further information.
  8800. SeeAlso: INT 16/AX=5500h
  8801. ----------1A6108-----------------------------
  8802. INT 1A - SNAP.EXE 3.2+ - "SNAP_SENDWITHREPLY" - SEND MSG AND GET REPLY
  8803.     AX = 6108h
  8804.     STACK:    WORD    conversation ID (0000h-0009h)
  8805.         DWORD    pointer to message buffer
  8806.         WORD    length of message
  8807.         DWORD    pointer to reply buffer
  8808.         WORD    length of reply buffer
  8809.         WORD    0000h (use default "Cparams" structure)
  8810. Return: AX = status (see below)
  8811.     STACK unchanged
  8812. Program: SNAP.EXE is a TSR written by IBM and Carnegie Mellon University
  8813.       which implements the Simple Network Application Protocol
  8814. SeeAlso: AX=6205h
  8815.  
  8816. Values for status:
  8817.  0000h successful
  8818.  F830h "SNAP_ABORTED"
  8819.  FC04h "SNAP_SERVERDIED"
  8820.  FC05h "SNAP_RESEND"
  8821.  FC06h "SNAP_SELECTFAILED"
  8822.  FC07h "SNAP_WRONGVERSION"
  8823.  FC08h "SNAP_INVALIDACK"
  8824.  FC09h "SNAP_TIMEOUT"
  8825.  FC0Ah "SNAP_SERVERREJECT"
  8826.  FC0Bh "SNAP_NOREPLYDUE"
  8827.  FC0Ch "SNAP_NOAUTHENTICATE"/"SNAP_GUARDIAN_ERROR"
  8828.  FC0Dh "SNAP_NOINIT"
  8829.  FC0Eh "SNAP_SOCKETERROR"
  8830.  FC0Fh "SNAP_BUFFERLIMIT"
  8831.  FC10h "SNAP_INVALIDCID"
  8832.  FC11h "SNAP_INVALIDOP"
  8833.  FC12h "SNAP_XMITFAIL"
  8834.  FC13h "SNAP_NOMORERETRIES"
  8835.  FC14h "SNAP_BADPARMS"
  8836.  FC15h "SNAP_NOMEMORY"
  8837.  FC16h "SNAP_NOMORECONVS"
  8838.  FFFFh failed (invalid function/parameter)
  8839. ----------1A6205-----------------------------
  8840. INT 1A - SNAP.EXE 3.2+ - "SNAP_SENDNOREPLY" - SEND MSG, DON'T AWAIT REPLY
  8841.     AX = 6205h
  8842.     STACK:    WORD    conversation ID (0000h-0009h)
  8843.         DWORD    pointer to message
  8844.         WORD    length of message
  8845.         WORD    0000h (use default "Cparms" structure)
  8846. Return: AX = status (see AX=6108h)
  8847.     STACK unchanged
  8848. SeeAlso: AX=6108h
  8849. ----------1A6308-----------------------------
  8850. INT 1A - SNAP.EXE 3.2+ - "SNAP_BEGINCONV" - BEGIN CONVERSATION
  8851.     AX = 6308h
  8852.     STACK:    WORD    offset of ASCIZ "guardian"
  8853.         WORD    offset of ASCIZ hostname
  8854.         WORD    offset of ASCIZ server name
  8855.         WORD    offset of ASCIZ userid
  8856.         WORD    offset of ASCIZ password
  8857.         WORD    offset of password length
  8858.         WORD    offset of password type
  8859.         WORD    offset of "Cparms" structure (see below)
  8860. Return: ???
  8861.     STACK unchanged
  8862. Note:    all stacked offsets are within the SNAP data segment (use AX=6A01h
  8863.       to allocate a buffer)
  8864. SeeAlso: AX=6405h,AX=7202h
  8865.  
  8866. Format of Cparms structure:
  8867. Offset    Size    Description
  8868.  00h    WORD    retry delay in seconds
  8869.  02h    WORD    timeout delay in seconds
  8870.  04h    WORD    maximum buffer size
  8871.  06h    WORD    encryption level
  8872. ----------1A6405-----------------------------
  8873. INT 1A - SNAP.EXE 3.2+ - "SNAP_ENDCONV" - END CONVERSATION
  8874.     AX = 6405h
  8875.     STACK:    WORD    conversation ID (0000h-0009h)
  8876.         DWORD    pointer to message buffer
  8877.         WORD    length of message
  8878.         WORD    0000h (use default "Cparms" structure)
  8879. Return: AX = status (see AX=6108h)
  8880.     STACK unchanged
  8881. Program: SNAP.EXE is a TSR written by IBM and Carnegie Mellon University
  8882.       which implements the Simple Network Application Protocol
  8883. SeeAlso: AX=6308h
  8884. ----------1A6900-----------------------------
  8885. INT 1A - SNAP.EXE 3.2+ - "SNAP_DATASEG" - GET RESIDENT DATA SEGMENT
  8886.     AX = 6900h
  8887. Return: AX = value used for DS by resident code
  8888. SeeAlso: AX=6A01h,AX=6F01h
  8889. ----------1A6A01-----------------------------
  8890. INT 1A - SNAP.EXE 3.2+ - "SNAP_ALLOC" - ALLOCATE BUFFER IN SNAP DATA SEGMENT
  8891.     AX = 6A01h
  8892.     STACK:    WORD    number of bytes to allocate
  8893. Return: AX = offset of allocated buffer or 0000h if out of memory
  8894.     STACK unchanged
  8895. Program: SNAP.EXE is a TSR written by IBM and Carnegie Mellon University
  8896.       which implements the Simple Network Application Protocol
  8897. SeeAlso: AX=6B01h
  8898. ----------1A6B01-----------------------------
  8899. INT 1A - SNAP.EXE 3.2+ - "SNAP_FREE" - DEALLOCATE BUFFER IN SNAP DATA SEGMENT
  8900.     AX = 6B01h
  8901.     STACK:    WORD    offset within SNAP data segment of previously allocated
  8902.             buffer
  8903. Return:    STACK unchanged
  8904. Note:    this call is a NOP if the specified offset is 0000h
  8905. SeeAlso: AX=6A01h
  8906. ----------1A6C04-----------------------------
  8907. INT 1A - SNAP.EXE 3.2+ - "SNAP_COPYTO" - COPY DATA TO RESIDENT SNAP PACKAGE
  8908.     AX = 6C04h
  8909.     STACK:    WORD    offset within SNAP data segment of dest (nonzero)
  8910.         WORD    segment of source buffer
  8911.         WORD    offset of source buffer
  8912.         WORD    number of bytes to copy
  8913. Return: AX = offset of byte after last one copied to destination
  8914.     STACK unchanged
  8915. Program: SNAP.EXE is a TSR written by IBM and Carnegie Mellon University
  8916.       which implements the Simple Network Application Protocol
  8917. SeeAlso: AX=6D04h
  8918. ----------1A6D04-----------------------------
  8919. INT 1A - SNAP.EXE 3.2+ - "SNAP_COPYFROM" - COPY DATA FROM RESIDENT SNAP PACKAGE
  8920.     AX = 6D04h
  8921.     STACK:    WORD    offset within SNAP data segment of source buffer
  8922.         WORD    segment of destination buffer
  8923.         WORD    offset of destination buffer
  8924.         WORD    number of bytes to copy
  8925. Return: AX = offset of byte after last one copied from source
  8926.     buffer filled
  8927.     STACK unchanged
  8928. SeeAlso: AX=6C04h
  8929. ----------1A6E01-----------------------------
  8930. INT 1A - SNAP.EXE 3.2+ - "SNAP_SETDEBUG" - SET ???
  8931.     AX = 6E01h
  8932.     STACK:    WORD    new value for ???
  8933. Return:    AX = old value of ???
  8934.     STACK unchanged
  8935. Program: SNAP.EXE is a TSR written by IBM and Carnegie Mellon University
  8936.       which implements the Simple Network Application Protocol
  8937. ----------1A6F01-----------------------------
  8938. INT 1A - SNAP.EXE 3.2+ - "SNAP_CHKINSTALL" - INSTALLATION CHECK
  8939.     AX = 6F01h
  8940.     STACK: WORD 0000h
  8941. Return: AX = status
  8942.         0000h SNAP is resident
  8943.         other SNAP not present
  8944.     STACK unchanged
  8945. Program: SNAP.EXE is a TSR written by IBM and Carnegie Mellon University
  8946.       which implements the Simple Network Application Protocol, and is
  8947.       required by PCVENUS (a network shell).  The combination of SNAP and
  8948.       PCVENUS allows the use of the Andrew File System as one or more
  8949.       networked drives.
  8950. SeeAlso: AX=6900h,AX=7400h
  8951. ----------1A7002-----------------------------
  8952. INT 1A - SNAP.EXE 3.2+ - "SNAP_SETANCHOR"
  8953.     AX = 7002h
  8954.     STACK:    WORD    anchor number (0000h-0009h)
  8955.         WORD    new value for the anchor
  8956. Return: AX = status
  8957.         0000h successful
  8958.         FFFFh failed (top word on stack not in range 00h-09h)
  8959.     STACK unchanged
  8960. SeeAlso: AX=7101h
  8961. ----------1A7101-----------------------------
  8962. INT 1A - SNAP.EXE 3.2+ - "SNAP_GETANCHOR"
  8963.     AX = 7101h
  8964.     STACK:    WORD    anchor number (0000h-0009h)
  8965. Return:    AX = anchor's value
  8966.     STACK unchanged
  8967. Program: SNAP.EXE is a TSR written by IBM and Carnegie Mellon University
  8968.       which implements the Simple Network Application Protocol
  8969. SeeAlso: AX=7002h
  8970. ----------1A7202-----------------------------
  8971. INT 1A - SNAP.EXE 3.2+ - "SNAP_SETCONVPARMS" - SET CONVERSATION PARAMETERS
  8972.     AX = 7202h
  8973.     STACK:    WORD    conversation ID (0000h-0009h)
  8974.         WORD    offset within resident data segment of "Cparms"
  8975.             structure (see AX=6308h)
  8976. Return:    AX = status???
  8977.     STACK unchanged
  8978. SeeAlso: AX=6308h
  8979. ----------1A7302-----------------------------
  8980. INT 1A - SNAP.EXE 3.2+ - "SNAP_CLIENTVERSION" - ???
  8981.     AX = 7302h
  8982.     STACK:    WORD    conversation ID (0000h-0009h)
  8983.         WORD    offset within resident data segment of ???
  8984. Return:    AX = ???
  8985.     ???
  8986.     STACK unchanged
  8987. SeeAlso: AX=7400h
  8988. ----------1A7400-----------------------------
  8989. INT 1A - SNAP.EXE 3.2+ - "SNAP_VERSION" - GET VERSION
  8990.     AX = 7400h
  8991. Return: AX = version (AH=major, AL=minor)
  8992. Note:    this call is only valid if SNAP is installed
  8993. SeeAlso: AX=7302h,INT 1A/AX=6F01h
  8994. ----------1A75-------------------------------
  8995. INT 1A - SNAP.EXE 3.2+ - "SNAP_NOP" - ???
  8996.     AH = 75h
  8997.     AL = ???
  8998. Return: AX = ??? (0000h)
  8999. Program: SNAP.EXE is a TSR written by IBM and Carnegie Mellon University
  9000.       which implements the Simple Network Application Protocol
  9001. ----------1A76-------------------------------
  9002. INT 1A - SNAP.EXE 3.2+ - "SNAP_802_5" - ???
  9003.     AH = 76h
  9004.     AL = ???
  9005. Return: AX = ???
  9006. ----------1A77-------------------------------
  9007. INT 1A - SNAP.EXE 3.4 - ???
  9008.     AH = 77h
  9009.     AL = ??? (at least 01h)
  9010.     STACK:    WORD    ???
  9011.         ???
  9012. Return: ???
  9013.     STACK unchanged
  9014. ----------1A7802-----------------------------
  9015. INT 1A - SNAP.EXE 3.4 - ???
  9016.     AX = 7802h
  9017.     STACK:    WORD    ???
  9018.         WORD    ???
  9019. Return: ???
  9020.     STACK unchanged
  9021. Program: SNAP.EXE is a TSR written by IBM and Carnegie Mellon University
  9022.       which implements the Simple Network Application Protocol
  9023. ----------1A7F-------------------------------
  9024. INT 1A - Tandy 2500, Tandy 1000L series - DIGITAL SOUND???
  9025.     AH = 7Fh
  9026.     ???
  9027. Return: ???
  9028. SeeAlso: AH=80h,AH=83h,AH=85h
  9029. ----------1A80-------------------------------
  9030. INT 1A - PCjr - SET UP SOUND MULTIPLEXOR
  9031.     AH = 80h
  9032.     AL = 00h source is 8253 channel 2
  9033.          01h source is cassette input
  9034.          02h source is I/O channel "Audio IN"
  9035.          03h source is sound generator chip
  9036. SeeAlso: AH=7Fh,AH=83h
  9037. ----------1A8100-----------------------------
  9038. INT 1A - Tandy 2500, Tandy 1000L series - DIGITAL SOUND - INSTALLATION CHECK
  9039.     AX = 8100h
  9040. Return: AH > 80h if supported
  9041. ----------1A83-------------------------------
  9042. INT 1A - Tandy 2500, Tandy 1000L series - START PLAYING DIGITAL SOUND
  9043.     AH = 83h
  9044.     AL = volume (0=lowest, 7=highest)
  9045.     CX = number of bytes to play
  9046.     DX = time between sound samples (multiples of 273 nanoseconds)
  9047.     ES:BX -> sound data (array of 8-bit PCM samples)
  9048. Return: ???
  9049. Notes:    this call returns immediately while the sound plays in the
  9050.       background
  9051.     The sound data pointed to by ES:BX probably shouldn't cross a 64k
  9052.       boundary.  The BIOS appears to call INT 15/AX=91FBh when the sound
  9053.       device underflows to allow another INT 1A/AH=83h for seamless
  9054.       playing of long sounds.
  9055. SeeAlso: AH=84h,INT 15/AH=91h
  9056. ----------1A84-------------------------------
  9057. INT 1A - Tandy 2500, Tandy 1000L series - STOP PLAYING DIGITAL SOUND
  9058.     AH = 84h
  9059. Return: ???
  9060. SeeAlso: AH=83h,AH=85h
  9061. ----------1A85-------------------------------
  9062. INT 1A - Tandy 2500, Tandy 1000L series - DIGITAL SOUND???
  9063.     AH = 85h
  9064.     ???
  9065. Return: ???
  9066. SeeAlso: AH=7Fh,AH=83h
  9067. ----------1AA0-------------------------------
  9068. INT 1A - Disk Spool II v2.07 - INSTALLATION CHECK
  9069.     AH = A0h
  9070. Return: AH = B0h if installed
  9071.         AL = pending INT 1A/AH=D0h subfunction if nonzero???
  9072.         ES = code segment
  9073.         ES:BX -> name of current spool file
  9074.         ES:SI -> current despool file
  9075.         CL = 00h despooler is disabled
  9076.            = 41h despooler is enabled
  9077.         CH = 00h spooler is disabled
  9078.            = 41h spooler is enabled
  9079.         DL = 00h despooler is currently active printing a file
  9080.            = 41h despooler is standing by
  9081.         DH = 00h ???
  9082.            = 41h ???
  9083.         DI = 0000h ???
  9084.          0001h ???
  9085. Note:    Disk Spool II is a shareware disk-based print spooler by Budget
  9086.       Software Company
  9087. SeeAlso: AH=ABh,AH=C0h,AH=D0h
  9088. ----------1AAB-------------------------------
  9089. INT 1A - Disk Spool II v1.83 - INSTALLATION CHECK
  9090.     AH = ABh
  9091. Return:    AH = BAh if installed
  9092.         AL = pending INT 1A/AH=ADh subfunction if nonzero???
  9093.         ES = code segment
  9094.         ES:BX -> name of current spool file
  9095.         ES:SI -> current despool file
  9096.         CL = 00h despooler is disabled
  9097.            = 41h despooler is enabled
  9098.         CH = 00h spooler is disabled
  9099.            = 41h spooler is enabled
  9100.         DL = 00h despooler is currently active printing a file
  9101.            = 41h despooler is standing by
  9102.         DH = 00h ???
  9103.            = 41h ???
  9104.         DI = 0000h ???
  9105.          0001h ???
  9106. Note:    Disk Spool II is a shareware disk-based print spooler by Budget
  9107.       Software Company
  9108. SeeAlso: AH=A0h,AH=ACh,AH=ADh
  9109. ----------1AAC-------------------------------
  9110. INT 1A - Disk Spool II v1.83 - INSTALLATION CHECK
  9111.     AH = ACh
  9112. Return: (see AH=ABh)
  9113. Note:    this function is identical to AH=ABh
  9114. SeeAlso: AH=A0h,AH=ABh,AH=ADh
  9115. ----------1AAD-------------------------------
  9116. INT 1A - Disk Spool II v1.83 - FUNCTION CALLS
  9117.     AH = ADh
  9118.     AL = function code
  9119.         02h enable spooler only
  9120.         03h enable the despooler
  9121.         04h disable the despooler
  9122.         08h inhibit popup menu
  9123.         09h enable popup menu
  9124.         0Ah ???
  9125.         0Bh disable the spooler
  9126.         0Ch start despooler after last successfully printed document???
  9127.         0Dh start despooler at the exact point where it last left off???
  9128.         0Eh pop up the menu
  9129.         0Fh ???
  9130.         11h ???
  9131.         14h ???
  9132.         15h ???
  9133.         16h ???
  9134.         17h ???
  9135.         18h ???
  9136.         19h ???
  9137.         20h clear file pointed to by the despooler???
  9138.         21h    ???
  9139.         22h    ???
  9140.         23h ???
  9141.         30h ???
  9142. Return: AH = 00h if successful
  9143. SeeAlso: AH=ABh
  9144. ----------1AC0-------------------------------
  9145. INT 1A - Disk Spool II v2.07 - ALTERNATE INSTALLATION CHECK
  9146.     AH = C0h
  9147. Return: (see AH=A0h)
  9148. Note:    this call is identical to AH=A0h
  9149. SeeAlso: AH=A0h,AH=ABh,AH=D0h
  9150. ----------1AD0-------------------------------
  9151. INT 1A - Disk Spool II v2.07 - FUNCTION CALLS
  9152.     AH = D0h
  9153.     AL = function code
  9154.         01h enable spooler and despooler
  9155.         02h enable spooler only
  9156.         03h enable despooler at beginning of file
  9157.         04h disable the despooler
  9158.         05h disable the despooler and spooler
  9159.         06h clear the spool file
  9160.         08h inhibit the popup menu
  9161.         09h enable the popup menu
  9162.         0Ah ??? (called by Disk Spool's INT 21 handler)
  9163.         0Bh disable the spooler
  9164.         0Ch start despooler after last successfully printed document
  9165.         0Dh start despooler at the exact point where it last left off
  9166.         0Eh pop up the menu
  9167.         0Fh ???
  9168.         11h start new spool file??? (called by Disk Spool's INT 21 handler
  9169.             when a program terminates)
  9170.         14h ???
  9171.         15h delete despool file and reset ???
  9172.         16h ??? (writes something to unknown file)
  9173.         17h ??? (writes something to despool file, then reads something
  9174.             else and ???)
  9175.         18h ??? (reads something from despool file, and then ???)
  9176.         19h ??? (creates/truncates spool file)
  9177.         20h clear file pointed to by the despooler
  9178.         21h ??? (writes something to unknown file)
  9179.         22h ??? (writes something to spool file if spooler/despooler using
  9180.             same file)
  9181.         23h ??? (opens/creates unknown file, then ???)
  9182.         30h ???
  9183.         31h ???
  9184.         32h beep
  9185.         33h append CRLF to spool file???
  9186.         34h ???
  9187.         35h ???
  9188.         36h ???
  9189.         37h append CRLF to spool file and start a new spool file???
  9190.         38h ???
  9191.         51h ??? (called by Disk Spool's INT 21 handler)
  9192.         52h ??? (called by Disk Spool's INT 21 handler)
  9193.         57h ???
  9194. SeeAlso: AH=A0h,AH=ADh
  9195. ----------1AF7-------------------------------
  9196. INT 1A - RighTime v1.1 - TEMPORARILY DISABLE
  9197.     AH = F7h
  9198. Notes:    RighTime is a TSR by G.T. Becker which continuously adjusts the system
  9199.       time to correct for clock drift
  9200.     any AH value from F0h-F7h or F9h-FEh will perform this function in
  9201.       version 1.1, but F7h is the function called by transient portion
  9202. SeeAlso: AH=F8h,AH=FFh"RighTime"
  9203. ----------1AF8-------------------------------
  9204. INT 1A - RighTime v1.1 - ENABLE
  9205.     AH = F8h
  9206. Notes:    RighTime is a TSR by G.T. Becker which continuously adjusts the system
  9207.       time to correct for clock drift
  9208.     RighTime is TeSseRact-compatible (see INT 2F/AX=5453h) and modifies its
  9209.       TeSseRact program identifier based on its current state: "RighTime"
  9210.       when enabled, "RighTim"F7h when disabled.
  9211. SeeAlso: AH=F7h,AH=FFh"RighTime"
  9212. ----------1AFE-------------------------------
  9213. INT 1A - AT&T 6300 - READ TIME AND DATE
  9214.     AH = FEh
  9215. Return: BX = day count (0 = Jan 1, 1984)
  9216.     CH = hour
  9217.     CL = minute
  9218.     DH = second
  9219.     DL = hundredths
  9220. SeeAlso: AH=FFh"AT&T",INT 21/AH=2Ah,INT 21/AH=2Ch
  9221. ----------1AFF-------------------------------
  9222. INT 1A - AT&T 6300 - SET TIME AND DATE
  9223.     AH = FFh
  9224.     BX = day count (0 = Jan 1, 1984)
  9225.     CH = hour
  9226.     CL = minute
  9227.     DH = second
  9228.     DL = hundredths
  9229. Return: ???
  9230. SeeAlso: AH=FEh,INT 21/AH=2Bh,INT 21/AH=2Dh
  9231. ----------1AFF-------------------------------
  9232. INT 1A - RighTime v1.1 - PERMANENTLY DISABLE
  9233.     AH = FFh
  9234. Notes:    RighTime is a TSR by G.T. Becker which continuously adjusts the system
  9235.       time to correct for clock drift
  9236.     upon being permanently disabled, RighTime closes the file handle
  9237.       referencing its executable (which is updated with time correction
  9238.       information every two minutes while RighTime is enabled).
  9239. ----------1B---------------------------------
  9240. INT 1B C - KEYBOARD - CONTROL-BREAK HANDLER
  9241. Desc:    this interrupt is automatically called when INT 09 determines that
  9242.       Control-Break has been pressed
  9243. Note:    normally points to a short routine in DOS which sets the Ctrl-C flag,
  9244.       thus invoking INT 23h the next time DOS checks for Ctrl-C.
  9245. SeeAlso: INT 23
  9246. ----------1C---------------------------------
  9247. INT 1C - TIME - SYSTEM TIMER TICK
  9248. Desc:    this interrupt is automatically called on each clock tick by the INT 08
  9249.       handler
  9250. Notes:    this is the preferred interrupt to chain when a program needs to be
  9251.       invoked regularly
  9252.     not available on NEC 9800-series PCs
  9253. SeeAlso: INT 08
  9254. ----------1D---------------------------------
  9255. INT 1D - SYSTEM DATA - VIDEO PARAMETER TABLES
  9256. Note:    default parameter table at F000h:F0A4h for 100% compatible BIOSes
  9257. SeeAlso: INT 10/AH=00h
  9258.  
  9259. Format of video parameters:
  9260. Offset    Size    Description
  9261.  00h 16 BYTEs    6845 register values for modes 00h and 01h
  9262.  10h 16 BYTEs    6845 register values for modes 02h and 03h
  9263.  20h 16 BYTEs    6845 register values for modes 04h and 05h
  9264.  30h 16 BYTEs    6845 register values for modes 06h and 07h
  9265.  40h    WORD    bytes in video buffer for modes 00h and 01h
  9266.  42h    WORD    bytes in video buffer for modes 02h and 03h
  9267.  44h    WORD    bytes in video buffer for modes 04h and 05h
  9268.  46h    WORD    bytes in video buffer for modes 06h and 07h
  9269.  48h  8 BYTEs    columns on screen for each of modes 00h through 07h
  9270.  50h  8 BYTEs    CRT controller mode bytes for each of modes 00h through 07h
  9271. ----------1E---------------------------------
  9272. INT 1E - SYSTEM DATA - DISKETTE PARAMETERS
  9273. Note:    default parameter table at F000h:EFC7h for 100% compatible BIOSes
  9274. SeeAlso: INT 13/AH=0Fh,INT 41
  9275.  
  9276. Format of diskette parameter table:
  9277. Offset    Size    Description
  9278.  00h    BYTE    first specify byte
  9279.         bits 7-4: step rate
  9280.              3-0: head unload time (0Fh = 240 ms)
  9281.  01h    BYTE    second specify byte
  9282.         bits 7-1: head load time (01h = 4 ms)
  9283.                0: non-DMA mode (always 0)
  9284.  02h    BYTE    delay until motor turned off (in clock ticks)
  9285.  03h    BYTE    bytes per sector (00h = 128, 01h = 256, 02h = 512, 03h = 1024)
  9286.  04h    BYTE    sectors per track
  9287.  05h    BYTE    length of gap between sectors (2Ah for 5.25", 1Bh for 3.5")
  9288.  06h    BYTE    data length (ignored if bytes-per-sector field nonzero)
  9289.  07h    BYTE    gap length when formatting (50h for 5.25", 6Ch for 3.5")
  9290.  08h    BYTE    format filler byte (default F6h)
  9291.  09h    BYTE    head settle time in milliseconds
  9292.  0Ah    BYTE    motor start time in 1/8 seconds
  9293. ----------1F---------------------------------
  9294. INT 1F - SYSTEM DATA - 8x8 GRAPHICS FONT
  9295.    points at 1024 bytes of graphics data, 8 bytes for each character 80h-FFh
  9296. Note:    graphics data for characters 00h-7Fh stored at F000h:FA6Eh in 100%
  9297.       compatible BIOSes
  9298. SeeAlso: INT 10/AX=5000h,INT 43
  9299. ---------------------------------------------
  9300.